我的 RHEL5 机器上安装了 python 2.4 和 2.6。
但
[de22596 gnuradio]:+ss$ python -V
Python 2.4.3
我尝试在 /usr/bin python -> python26 中创建一个符号链接,然后我得到了
[de22596 gnuradio]:+ss$ python -V
Python 2.6
但很多东西都坏了,比如 yum。我该如何修复它?
现在,我有这个:
[de22596 bin]:$ ls -l python*
lrwxrwxrwx 1 root root 9 Jul 20 10:52 python -> python2.4
lrwxrwxrwx 1 root root 6 Jul 12 15:02 python2 -> python
-rwxr-xr-x 2 root root 8304 Jun 11 2009 python2.4
-rwxr-xr-x 2 root root 8328 Apr 9 11:17 python26
-rwxr-xr-x 2 root root 8328 Apr 9 11:17 python2.6
-rwxr-xr-x 1 root root 1418 Apr 9 11:17 python2.6-config
-rwxr-xr-x 2 root root 8304 Jun 11 2009 python.back
lrwxrwxrwx 1 root root 16 Jul 20 10:34 python-config -> python2.6-config
我可以做吗
yum remove python2.4
还能正常工作吗?我很担心,因为 yum 是一个 python 脚本,所以如果我删除 python2.4,它是否足够智能地
答案1
不幸的是,您无法从 RHEL5 中删除 Python 2.4,除非您能够删除(或修补)数十个仅适用于 2.4 而不适用于 2.6 的 Python 脚本。您可以轻松地同时安装 2.6 和 2.4(正如您已经知道的那样),但删除 2.4 是一项“大手术”。您当然可以尝试,但大多数用户/操作员都不愿意这么做。
正如另一位发帖者所说,“/usr/bin/python26”位于您的默认 PATH 中,就像“/usr/bin/python”一样。在命令行上,您可以直接调用“python26”而不是“python”。在 2.6 特定的脚本/程序中,您可以将 she-bang 行替换为“#!/usr/bin/python26”。
处理仅适用于 2.6 的模块有点困难。您需要将它们从“/usr/lib/python/...”移动到“/usr/lib/python26/...”。如果您很幸运,有人可能已经在 RHEL5 上打包了专门针对 Python 2.6 的变体,并且更改了路径,或者您可以自己修改和重建现有的 RPM。
问题在于,从 Python 2.4 过渡到 2.6 引入了一些向后不兼容性。因此,许多以 2.4 为背景编写的脚本如果不打补丁,将无法在 2.6 下正常运行。(有人声称 2.6 是向后兼容的……虽然很接近,但不是 100%。)
最近的 Fedora 版本和 RHEL6 测试版都提供了更高级的 Python 版本 (2.5+),以及数十个(可能数百个)Python 脚本的更新。但 Red Hat 决定将其 EL5 分支保留在 Python 2.4 上,可能是因为存在破坏客户端机器上运行的任何仅限 Python 2.4 的脚本的风险。(对于像 RHEL 这样的长期稳定的发行版系列来说,这是一种相当标准的做法。)
答案2
很简单。不要这么做。要么修改相应脚本的 shebang 行,要么python26
直接调用。
答案3
我知道这不会有太大帮助,但是为什么你需要升级 python ? - RHEL5 旨在实现稳定性,因此在利用新版本的能力方面存在固有的权衡。