在Ubuntu上安装MySQLdb

准备用Python写点脚本练练手,于是在Ubuntu上安装Python的MySQLdb,本以为很简单的事,没想到还碰到几个小波折,因此记录一下以备忘。

首先需要安装Python-dev,否则后面编译MySQLdb的时候会报错,找不到头文件:

building '_mysql' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC
 -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 
-I/u01/mysql/include/mysql -I/usr/include/python2.6 -c _mysql.c
-o build/temp.linux-i686-2.6/_mysql.o -DUNIV_LINUX
In file included from _mysql.c:29:
pymemcompat.h:10: fatal error: Python.h: 没有那个文件或目录
compilation terminated.
error: command 'gcc' failed with exit status 1
sudo apt-get install python-dev

其次需要先安装setuptools,否则MySQLdb无法编译

ImportError: No module named setuptools

setuptools从这里下载

python setup.py build
sudo python setup.py install

这里下载MySQLdb
修改site.cfg将mysql_config指向正确的位置

python setup.py build
sudo python setup.py install

最后还需要安装libmysqlclient-dev,否则import模块的时候会出错

ImportError: libmysqlclient_r.so.16: cannot open shared object file:
 No such file or directory
sudo apt-get install libmysqlclient-dev

装完以后,来个hello world式的简单查询

#!/usr/bin/env python
import MySQLdb

db=MySQLdb.connect(host="host_name",db="mysql",user="ningoo",passwd="password")
c=db.cursor()
n=c.execute("select user,host from user")
for row in c.fetchall():
        for col in row:
                print col

在Ubuntu上使用SystemTap

虽然很早以前听说过,但基本没用过,最近褚霸同学的介绍,勾起了我对这个东西的兴趣。最近在工作笔记本上装了个Ubuntu10.10做为主操作系统,因此正好在上面也实验学习下SystemTap。

安装systemtap

sudo apt-get install systemtap

Ubuntu Desktop默认没有安装kernel debug info的包,systemtap无法追踪内核信息。查看内核版本

ningoo@ning:~/stap$ uname -r
2.6.35-22-generic

这里下载对应的kernel debug info包,安装

sudo dpkg -i linux-image-2.6.35-22-generic-dbgsym_2.6.35-22.35_i386.ddeb 

至此内核追踪已经可以执行,但module的信息还需要多做些工作

sudo apt-get install elfutils

for file in `find /usr/lib/debug -name '*.ko' -print`
do
      buildid=`eu-readelf -n $file| grep Build.ID: | awk '{print $3}'`
      dir=`echo $buildid | cut -c1-2`
      fn=`echo $buildid | cut -c3-`
      mkdir -p /usr/lib/debug/.build-id/$dir
      ln -s $file /usr/lib/debug/.build-id/$dir/$fn
      ln -s $file /usr/lib/debug/.build-id/$dir/${fn}.debug
done

Hello world

ningoo@ning:~/stap$ sudo stap -ve 'probe begin { log("hello world") exit() }'
Pass 1: parsed user script and 72 library script(s)
 using 18896virt/12868res/1880shr kb, in 130usr/20sys/150real ms.
Pass 2: analyzed script: 1 probe(s), 2 function(s), 0 embed(s), 0 global(s) 
 using 19160virt/13132res/1908shr kb, in 10usr/0sys/5real ms.
Pass 3: using cached /home/ningoo/.systemtap/cache
 /f1/stap_f10ab2aeba4f2da2c03646b27b4d3627_757.c
Pass 4: using cached /home/ningoo/.systemtap/cache
 /f1/stap_f10ab2aeba4f2da2c03646b27b4d3627_757.ko
Pass 5: starting run.
hello world
Pass 5: run completed in 0usr/30sys/297real ms.

参考:
http://sourceware.org/systemtap/documentation.html
http://sourceware.org/systemtap/wiki/SystemtapOnUbuntu

调节VirtualBox中Ubuntu虚拟机的分辨率

准备将工作电脑环境迁移到Linux,先在虚拟机中适应,之前在x200中使用vmware,每次启动虚拟机,电脑都要假死十几分钟才能反映过来,于是改用轻量级的VirtualBox3.2.10(又一款带Oracle标的东东,Oracle越来越无处不在了),下载Ubuntu10.10,很快安装搞定。不过头疼和悲剧的是,旺旺还没有Linux版本。。。

不过进Ubuntu桌面后,屏幕分辨率只能在800×600和640×480之间切换,刷新频率也是很奇怪的61HZ。Google了下发现是需要和VMWareTool一样需要安装一个虚拟机的辅助工具。先在“设备”->“分配光驱”选中VBoxGuestAdditions.iso,然后运行其中的安装程序或者脚本:

ningoo@ningoo-VirtualBox:~$ sudo sh /media/VBOXADDITIONS_3.2.10_66523/VBoxLinuxAdditions-x86.run 
[sudo] password for ningoo: 
Verifying archive integrity... All good.
Uncompressing VirtualBox 3.2.10 Guest Additions for Linux........
VirtualBox Guest Additions installer
Uninstalling old VirtualBox DKMS kernel modules ...done.
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module ...done.
Building the shared folder support module ...done.
Doing non-kernel setup of the Guest Additions ...done.
Starting the VirtualBox Guest Additions ...done.
Installing the Window System drivers
Installing X.Org Server 1.9 modules ...done.
Setting up the Window System to use the Guest Additions ...done.
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services components ...done.

安装完重启,VirtualBox就能根据是否全屏以及物理主机的分辨率等情况自动支持相应的分辨率了。话说Ubuntu用起来确实太爽了,尤其是碰到需要安装一些东西到时候:

ningoo@ningoo-VirtualBox:~$ opreport
程序“opreport”尚未安装。  您可以使用以下命令安装:
sudo apt-get install oprofile
ningoo@ningoo-VirtualBox:~$ sudo apt-get install oprofile
[sudo] password for ningoo: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
将会安装下列额外的软件包:
  libopagent1
建议安装的软件包:
  oprofile-gui
下列【新】软件包将被安装:
  libopagent1 oprofile
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 101 个软件包未被升级。
需要下载 3,281kB 的软件包。
解压缩后会消耗掉 9,105kB 的额外空间。
您希望继续执行吗?[Y/n]y
获取:1 http://cn.archive.ubuntu.com/ubuntu/ maverick/universe 
libopagent1 i386 0.9.6-1.1ubuntu1 [21.5kB]
获取:2 http://cn.archive.ubuntu.com/ubuntu/ maverick/universe 
oprofile i386 0.9.6-1.1ubuntu1 [3,260kB]
下载 3,281kB,耗时 59秒 (54.8kB/s)                                             
选中了曾被取消选择的软件包 libopagent1。
(正在读取数据库 ... 系统当前共安装有 122744 个文件和目录。)
正在解压缩 libopagent1 (从 .../libopagent1_0.9.6-1.1ubuntu1_i386.deb) ...
选中了曾被取消选择的软件包 oprofile。
正在解压缩 oprofile (从 .../oprofile_0.9.6-1.1ubuntu1_i386.deb) ...
正在处理用于 doc-base 的触发器...
Processing 1 added doc-base file(s)...
Registering documents with scrollkeeper...
正在处理用于 man-db 的触发器...
正在设置 libopagent1 (0.9.6-1.1ubuntu1) ...
正在设置 oprofile (0.9.6-1.1ubuntu1) ...
正在处理用于 libc-bin 的触发器...
ldconfig deferred processing now taking place

无觅相关文章插件,快速提升流量