2012年3月8日 星期四

升級 python 後 yum 無法使用的解決方法

CentOS 的 yum 版本需使用 python2.4 才能正確執行。如果更新 python 的版本,yum 馬上就不能用,很不給面子。

這時候執行 yum 會得到以下的錯誤訊息:

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.2 (default, Dec 12 2011, 11:21:33)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)]

If you cannot solve this problem yourself, please go to
the yum faq at:
http://wiki.linux.duke.edu/YumFaq

主要的原因就是升級 python 時,並沒有把 yum 需要的一些模組給安裝進來,所以 yum 就無法執行了。

不過還好的就是升級 python 之後,舊的 python 還是存在,我們祇要叫 yum 去使用舊版的 python 就可以解決這個問題了。要讓 yum 使用舊版 python 也很簡單,因為 yum 祇是一個 script 檔案,所以祇要把第一行直譯器位置改一下就可以了。

為了要修改 yum 檔案,我們現在需要知 yum 安裝在哪邊,以及舊版 python 安裝在哪裡。這祇要利用 which 指令就可以找得到:

which yum
which python2.4

找到兩者的位置後,比方說,兩個檔案分別在:

/usr/bin/yum
/usr/bin/python2.4

就可以去修改 yum 了:

vi /usr/bin/yum

將檔案第一行的 #!/usr/bin/python 修改為:

#!/usr/bin/python2.4

存檔之後 yum 就可以使用了。

另外也可以安裝 pythonbrew 這套軟體來幫忙做 python 的版本管理,日後可以視需要切換不同的 python 版本方便使用。pythonbrew 的詳細資料可以參考 Pythonbrew - 讓環境得以快速切換不同的 Python 版本這篇文章。

Technorati : ,