最近在红帽子下进行一些工作,需要安装一些软件,但是软件对系统中的一些依赖类库等一些东西有版本要求,比如安装torque就需要Python2.5.1,而系统自带的Python版本却是2.4的,想卸载Python2.4安装Python2.5,但是还有其他的一些软件也依赖Python2.4,把它卸载后,那些软件将无法正常使用。当然Linux系统可以直接装多个Python版本,但是因为所安装的软件一般会直接使用系统默认安装的版本(可能是软件开发过程中设置的就是默认的Python版本为2.5.1),所以即使新的版本安装好了也没用。这个问题困扰了很长时间,在网上搜了一些材料,经过试验是可行的解决办法,具体如下:
1.我面临的问题正如上面所说,系统自带Python2.4,我需要将系统自带的Python升级到Python2.5,而且不影响其他软件使用
2.解决办法:
2.1下载Python2.5.1源码包,网址是http://www.iteedu.com/download/python/python.php,现在官网有时候打不开,这个网站提供的版本比较全,很不错。
2.2安装
$tar jxvf Python2.6.5.tar.bz2 解压源码包
$cd Python2.6.5 进入解压后的源码目录
$./configure
$make
$make install 编译安装(需要root权限)
有Linux基础知识的人都知道这样安装的路径为/usr/local/lib/python2.5,可以通过$ /usr/local/bin/python2.6 -V查看Python的版本信息。
2.3建立软链接,将系统默认Python指向新版本
按照上面的安装过程,我们只是在系统中安装了有一个版本的Python,但是并未改变系统默认的设置。在下面的修改前,我们先看一下在当前工作目录下运行$ python -V命令,输出的结果应该是说Python的版本为2.4,这说明我们并未对Python的默认版本进行修改。但注意因为有的软件就是需要Python2.4,所以也不能盲目卸载掉Python2.4。
进行下面的操作:
$mv /usr/bin/python /usr/bin/python.bak 通过修改系统默认Python的文件名,然后将系统默认的Python作为我们后安装的Python2.5.1的软链接,就可以了
$ln -s /usr/local/bin/python2.5 /usr/bin/python
然后测试一下系统默认Python设置升级是否成功,运行$ python -V命令,输出的结果应该是说Python的版本为2.5.1,这就说明我们成功的修改升级了系统默认的Python版本。
3.一点儿善后工作
因为有一些软件只依赖Python2.4,所以我们的修改将使它们不愿意工作,好在我们并未卸载Python2.4,只是原来的/usr/bin/python和/usr/bin/python2.4是一样的,而现在/usr/bin/python被我们改为指向python2.5,所以凡事这种“老顽固”的遗老遗少的软件里在用python指代python2.4的就需要做个修改,这样他们才会好好工作。具体的例子如下:
python软链接指向python2.6版本后,yum不能正常工作,按照上面说的就要这么做:
$vi /usr/bin/yum
将文本编辑显示的#/usr/bin/python修改为#/usr/bin/python2.4,保存修改即可
4.最后的总结
其实Linux中存在很多这种依赖性关系,尤其是遇到这种比较顽固的依赖问题,都可以这样解决,因为软件依赖其他软件或库的方法无非就是路径问题,而正好我们用户安装的软件版本不会和系统默认安装的冲突(自己安装的一般安装在/usr/local路径下),这样我们通过软链接就很容易的修改系统默认的指向,所以这个方法适用于很多情况,比如jdk等。其实这个问题还应该是有其他解决办法的,我们这样做只是从系统这方面在考虑问题,从软件方面考虑,如果我们可以修改它的配置属性,使其调用调用相关依赖的文件路径为我们自己安装的路径就好了,这种情况在windows安装Java集成开发环境时对jdk的选择就用到了。就到这儿,希望对大家有用。