2009年4月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 : , ,