升级python而不会破坏yum

我最近通过编译源码在CentOS机器上安装了Python 2.7.3。 Python 2.7.3安装在/opt/python2.7,当我安装它时,我只是改变/ usr / bin / python指向新版本。 这显然是错误的,因为当我做到了,它打破了百胜。 我会得到以下。

There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named yum Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: 2.7.3 (default, May 15 2012, 17:45:42) [GCC 4.4.4 20100726 (Red Hat 4.4.4-13)] If you cannot solve this problem yourself, please go to the yum faq at: http://yum.baseurl.org/wiki/Faq 

我改变了/ usr / bin / python指向python 2.6.6,但现在2.6.6是python的默认版本。 任何想法如何解决这个问题?

我已经写了一个关于如何在CentOS 6和CentOS 7上安装最新版本的Python 2和Python 3的快速指南 。它目前涵盖了Python 2.7.13和Python 3.6.0。

你不应该改变系统版本的Python,因为它会打破系统(如你所知)。 只要您保留原始系统版本,安装其他版本就可以正常工作。 这可以通过在运行configure时使用自定义前缀(例如/usr/local )来完成,而在安装Python的构build时使用make altinstall (而不是正常的make install )。

只要记得键入包括版本号的全名(例如“python2.7”或“pip2.7”),就有可用的多个版本的Python通常不是一个大问题。 如果你使用virtualenv来完成所有的Python工作,那么版本pipe理就是为你处理的,所以请确保你安装并使用了virtualenv!

 vim `which yum` modify #/usr/bin/python to #/usr/bin/python2.4 

/opt/python2.7/bin放在/usr/bin前的PATH环境variables中,或者只是习惯于inputpython2.7

pythonbrew的一个活跃的叉子pythonz,使得这一切变得轻而易举。 您可以安装一个版本:

 # pythonz install 2.7.3 

然后build立一个符号链接:

 # ln -s /usr/local/pythonz/pythons/CPython-2.7.3/bin/python2.7 /usr/local/bin/python2.7 # python2.7 --version Python 2.7.3 
 ln -s /usr/local/bin/python2.7 /usr/bin/python 

如果你想试用rpm包,你可以安装基于最新Fedora rpms的二进制包,但在RHEL6 / CentOS6 / ScientificLinux-6上重新编译:

 http://www.jur-linux.org/download/el-updates/6/ 

最好的祝福,

Florian La Roche

相反,我build议更新相关脚本(如/ usr / bin / yum)中的path,以指向您以前的Python作为解释器。

理想情况下,你想升级yum及其关联的脚本,以便它们被安装的默认Python支持。

如果这是不可能的,以上是完全可行和testing。

更改:

 #!/usr/bin/python 

不pipe你的旧版本的path是什么,直到你可以做出上述的胜利。

如果你有一个孤立的机器,没有时间手动升级rpm,或者不能暂时或永久地连接到一个标准的yum版本库。