Thursday, June 19, 2008

RedHat Ubuntu python Mysql MySQLdb mantis+subversion

这几天搞subversion+mantis整合的事情,折腾的一天,目前貌似前进了一步,至少可能遇到的问题应该都被解决了。 将版本控制系统和缺陷管理系统整合起来是一件很值得的事情,通过整合,可以将需求和最终的实现形成一条可追踪的线, 而不是一些离散的软件开发活动。 我们可以分析用例,进行概要设计,并且将软件实现分解成较少工作量的任务,这些东西可以通过在缺陷管理系统中file一个总体的bug,说明要实现的是什么东西,然后每个分解的任务file一个bug,这些bug依赖于那个描述总体的bug。这种方式扩展了缺陷管理系统的概念,应该把它叫做制品管理系统,因为在这个系统中不再只有bug这一个概念,还包括了feature,enhancement,task等。 :(,觉得表达的有些混乱。
下面说说整个整合的过程。
一开始从网上找了文档,有专门说subversion和mantis怎么整合的,看了看,觉得大概没问题,因为我以前也在linux下配过不少东西,mysql, bugzilla,subversion,apache等,所以想事情应该不会太困难。
事实是实际的开发环境和文档中讲的不一样,几乎所有的文档中说的都是mantis和subversion都运行在linux上,这样subversion可以通过ssh来无交互地直接执行mantis机器上的命令。问题是,我们的mantis是跑在window上的。 妈妈的,我尝试在window上装了个windosshd,然后从linux下可以通过密码的方式访问mantis的机器,但是rsa(不需要输入密码)就怎么也不行,openssh本身不太懂。实在搞不定,后来想就直接在subversion的机器上用python来访问mantis的mysql数据库得了,这也行的通,何况我最近一直学习python,正好小试牛刀。

python访问mysql需要MySQLdb的库,我需要在subversion那台机器上安装这个库。 因为我一直用ubuntu,所以直接‘sudo apt-get install mysql-server', 居然提示我没有这个命令,有点昏。后来一查,subversion的机器是redhat enterprise linux4.4的,只好去MySQLdb的网站下载targz的包。 这个包是需要编译的,但是编译过程中总是提示找不到mysql头文件(mysql_config.h),这样看来我需要安装mysql了。
跑到mysql的网站上下载了redhat enterprise linux4的mysql4.1.22的rpm包,结果安装这个包的过程中总是提示文件冲突,烦死了,而且rpm包里面并没有要求的mysql_config.h文件。在后来我就下载了一个mysql的linux下的通用包,48M,这次好了,这个包里面是完整的mysql-server的目录,哈哈,看来要爽一回。
进入MySQLdb的安装目录,需要修改site.cfg文件,设定mysql_config到下载的这个mysql-server目录,即$mysql_server_home/bin, 这次执行python setup.py build就成功了。
mysql_config 是mysql的一个工具,可以查看mysql的很多编译安装信息,所以很多需要mysql头文件来编译的项目都会使用这个工具。在ubuntu下,这个工具要单独安装。
在控制台执行命令:
$python
>>> import MySQLdb
没有报错,安装成功,接下来就是写python代码了
--------------------------------
现在又碰到了中文编码的问题,由于svn提交的时候指定中文消息,这些消息被mantis显示出来的时候全是乱码。后来总算找到办法了,原来需要进行'中文'.decode('utf-8').encode('gbk'),但是subversion那台机器上的python是2.3的,没有中文解码包,需要安装python-cjkcodecs。 python2.4就自带这个包了。妈的!