顯示具有 yum 標籤的文章。 顯示所有文章
顯示具有 yum 標籤的文章。 顯示所有文章

2012/03/08

升級 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 : ,

2009/04/21

yum 資料庫損毀的修復方式

這一陣子要用 yum 更新主機程式時,發現系統丟一堆錯誤訊息給我。總之,就是 yum 壞了,沒辦法讓我更新程式啦。

我得到的錯誤訊息如下:

rpmdb: Lock table is out of available locker entries
error: db4 error(22) from db->close: Invalid argument
error: cannot open Packages index using db3 - Cannot allocate memory (12)
error: cannot open Packages database in /var/lib/rpm

上網找了資料,發現這個錯誤的發生原因應該是 yum/rpm 執行時被意外中止,使得 rpm 執行時產生的臨時檔案未能移除,所以再度執行 yum/rpm 時,系統發現上一次執行時產生的臨時檔案還在,就出現錯誤訊息了。

要更正這個錯誤就祇要將這些臨時檔刪除,再重建一次 rpm 的資料表就可以了。操作方式如下:

  1. 為了保險起見,先將 /var/lib/rpm 底下的 rpm 資料表備份起來:
    tar cvzf rpmdb-backup.tar.gz /var/lib/rpm
     
  2. 刪除 rpm 的 BDB 資料表:
    rm /var/lib/rpm/__db.00*
     
  3. 重新建立 rpm 的資料表:
    rpm --rebuilddb
     
  4. 完工

然後,還可以檢查一下修正的結果是否正常。這祇要檢查一下系統安裝的 rpm 有哪些就可以了,檢查的方式如下:

rpm -qa | sort

列得出來就是修正完成,列不出來的話……再找修正的方式吧!!XD 至少我今天這樣做是有修好機器啦。

ps:這幾天各台主機都在出問題,從早晚到都在修不同台主機,好可怕啊!學務系統主機也出問題,這個最可怕!求求你們撐到暑假,讓我好好整理一下再掛點吧!

Technorati : , ,