libmysqlclient_r.so.16: cannot open shared object file

前端时间把系统升级成 ubuntu 12.04,今天在执行之前写的一个 Python 爬虫程序时,突然报出 ImportError: Error loading object ‘crawler.pipelines.MysqlPipeline': libmysqlclient_r.so.16: cannot open shared object file: No such file or directory 这个错误。

原来 ubuntu 12.04 把 libmysqlclient 16 升级成了 libmysqlclient 18,所以才导致这个问题,一个偷懒的解决办法如下:

cd /usr/lib/i386-linux-gnu/
sudo ln -sf libmysqlclient_r.so.18 libmysqlclient_r.so.16

如果你有更好的解决办法,欢迎分享!

easy_install MySQLdb(mysql-python) 时提示 mysql_config not found

最近在尝试用 python 写一些小脚本,通过 easy_install 安装 python 下 mysql-python module MySQLdb 时,遇到了如下错误提示:

EnvironmentError: mysql_config not found

原因是安装 mysql-python 前,需要安装 libmysqlclient16 libmysqlclient16-dev 和 python-dev。即:

sudo apt-get install libmysqlclient16 libmysqlclient16-dev python-dev

然后再执行:

sudo easy_install mysql-python

即可安装成功。

ubuntu 11.10 下 fuser 进程狂占资源

主要是因为 /etc/cron.d/php5 做了更新。

ubuntu 11.04 上此文件的内容是:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

而 ubuntu 11.10 上此文件的内容是:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null ; -delete

在 session 文件很多的情况下,会有成千上万个 fuser 进程:

# ps -C fuser | wc -l
22634

而且偶尔会收到 Failed to fork: Cannot allocate memory 这样的错误。

目前解决方式是用 ubuntu 11.04 上面的 /etc/cron.d/php5 里的内容,替换掉 ubuntu 11.10 上的同名文件。

Ubuntu 下将 .bin/.cue 光盘镜像文件转换成 .iso 格式

现在 Ubuntu 桌面版已经做的很人性化了,点击 .iso 格式的光盘镜像文件,会直接 mount 成一个文件夹,对于我这种经常在网上下载 iso 格式的电子资料的人来说,真的很方便。

不过,网上的很多资料也会以 .bin/.cue 格式的光盘镜像发布,这种文件就没有 .iso 那么直接,所以,我一般都是将 .bin/.cue 格式的光盘镜像文件转换成 .iso 格式。方法如下:

1. 安装 bchunk: sudo apt-get install bchunk
2. 直接转换: bchunk file.bin file.cue file.iso

注意: bin 和 cue 文件必须提供,第三个参数是你要转换的 iso 文件名称。

关于 bchunk 更多参数,请直接 man bchunk 。

linux 下批量替换文件中的字符串

用 sed 命令:

sed -i “s/查找的字符串/新字符串/g” `grep “查找的字符串” -rl 查找目录`

比如你需要将当前目录下面,文件中的 codebit.cn 替换为 www.codebit.cn,可以用下面的命令:

sed -i “s/codebit.cn/www.codebit.cn/g” `grep “codebit.cn” -rl ./`

来源:http://www.admin99.net/read.php/108.htm

为 Ubuntu 8 服务器版中的 Apache 开启 mod_rewrite 模块

  1. 将 rewrite.load 添加到 /etc/apache2/mods-enabled, 执行下列命令:
    sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
  2. 编辑 apache 的配置文件:
    sudo vi /etc/apache2/sites-enabled/000-default
    将 <Directory /var/www/> 里面 AllowOverride 的值改为 All
  3. 重启 apache :
    sudo /etc/init.d/apache2 restart