linux 升级yum对应的python

时间:2023-12-31 12:59:38

这里记录一下linux 系统升级python对yum带来影响的解决办法

  很多人在使用linux系统执行python任务的时候需要升级linux系统自带的python到高级版本。具体如何升级python这里就不做介绍了。简单说一下,一般重源码编译安装高版本的python,如果不指定安装目录,就不会覆盖系统的原生python,这里升级之后就可以通过ln -s的方式把新版本声明到系统里。系统里就可以使用新版本的当作默认环境。如果指定了安装目录对原生进行覆盖就直接将新版本声明到系统,并且成了默认的python环境。

  升级python之后yum随之就出现问题了。非覆盖安装的比较容易解决,只需要将/usr/bin/yum 文件的shebang中python改成python2.6(或系统原先老版本号)就可以了。网上搜索python升级yum问题的时候大多也都是这个方案文档。但是这个方法并不适用于覆盖安装的方法。

  覆盖安装的解决方法稍微复杂一点。需要将yum依赖的库文件从老的环境里安装到新环境中。这个需要提前重老版本中备份出来。如果没有备份也可使用其他正常机器上的这几个文件。

  直接将这几个目录文件复制到现在新python 环境中的lib库目录下即可。

  依赖如下:

      rpm*,urlgrabber*,pycurl,sqlite*,sqlitecachec*

      这些依赖都在/usr/lib/python/site-packages和/usr/lib64/python/site-packages以及/usr/lib64/python/lib-dynload目录中。

      sqlite是_sqlite.so一个文件在lib-dynload下,sqlitecache中有一个_sqlitecachec.so和其他sqlitecachec*文件在site-packages目录下

      rpm和urlgrabber都是多个目录ls | grep rpm 出现的都是需要的依赖不可缺少。在site-packages目录下

      pycurl 可以直接使用easy_install 安装

   

  上述方法在2.6到2.7升级,以及2.7到其他2.7版本升级中测试可以解决yum不可用问题。此外的版本并未测试,不知道是否有效。