刚刚装好Ubuntu8.04,然后打算装个Mercurial,于是,就自己下载mercurial的源代码,进行编译,结果编译出错,提示Python.h不存在,一查,果然不存在.
Ubuntu是个很好的系统,很精简化,安装盘只要一张CD大小,而且要获得软件也很容易, 只要apt-get install XXX就可以了, 唯一有点烦人的就是包的名称需要自己去 上找. 而自带的很多程序和库,都是可以适用于运行,但不适用于开发, 比如, 刚装好的python是可以运行的,但是当要编译python扩展的时候,就会出错,因为开发的包默认是不提供的. 还有其他的比如ssl,zlib等等库都是如此,都是运行时的,但是没有相应的头文件等,于是不能在上面编译其他工具.
我一看到Python.h不存在,就下载了Python的源代码,并且编译了一下, Python.h就出来了,而后, 也顺利的编译了mercurial, 还可以运行.
但是一用hg取一个https的repository,错误就出来了, 我自己编译的Python没有SSL的支持, 要编译出SSL的扩展,就需要ssl的header等, 如果手动编译ssl header的话, 就要重新编译ssh/scp/rsync等, 要不然就会有"no version information available"等警告.总之,要做的也蛮多的.
于是,我放弃了自己装ssl的想法,就查了以下, 运行以下命令:sudo apt-get install libwww-ssl-dev, 于是,ssl的头文件等就出来了, 重编译Python, 在configure Python的时候使用了--enable-ssl,而后, 改了以下python底下的Module/Setup文件,启用了ssl并且修正ssl的路径, 再Make && sudo make install一下, 带ssl支持的python就装好了, hg可以正确的处理https的repository了.
使用apt-get install 固然好, 因为包的数量是很多的,所以上面我提到的python有python-all-dev, zlib有zlib1g和zlib1g-dev, mercurial有mercurial和hg-buildpackage等. 然而,也有一些不好的地方,一个是apt-get install默认都装在/usr/lib中, 不利于软件和库的管理, 而且apt-get install的运行需要有root的权限. 另一个就是, apt-get install的软件一般不是最新版本. 要最新版本的话, 最好还是要自己的手动编译, 而手动编译的话,就要自己处理包依赖关系了, 好处则是,可以自己选择包版本,可以自己选择安装目录,利于包管理, 如果装在用户自己目录下的话,不需要任何特殊权限.
阅读(2340) | 评论(0) | 转发(0) |