2008年6月16日 星期一

[轉]使用 apt 更新 glibc 及 glibc-common 掛點之自救法

[以下轉貼自酷!學園]
使用 apt 更新 glibc 及 glibc-common 掛點之自救法

最近嘗試在老舊的電腦上灌 RedHat 9.0
(我只選 text-based internet 安裝後用了 5xx MB)
安裝過程還算順利,完成之後我立即為它裝上 apt 套件
然後執行

apt-get update
apt-get -y upgrade

中間顯示有許多套件將由 apt 執行更新(這裏頭包含了 glibc , glibc-common)
一開始更新的過程都很正常,直到要安裝 glibc-common glibc 時,
畫面出現了要命的訊息... 大意是說 rpm 的 database 好像出了問題,
還有一些不知名的 error。當一切結束回到命令列時,我發現一堆指令都不能用了
連 ls -l 都會出現 segment fault,我最擔心的 rpm 指令就更不用說了:(

經過一連串亂按的掙扎後,絕望的我只好用我這帶賽的食指按下 reset 鈕,
祈禱重新開機後一切恢復原狀。可是,畫面上只無力地顯示著一些系統不正常
的訊息。

但我不死心,我相信這一切只是 glibc-common 及 glibc 在安裝過程出了點
小問題(至今我尚未能理解為何有時候會,有時候不會),
系統的其它部分是完好如初的(glibc 提供系統所需的動態函式庫)。

我想如果是 glibc-common 或 glibc 沒裝好的話,應該有可能重新裝回去就可以了,
我知道 rpm 有個 --root 的指令可以指定 rpm 安裝的根目錄,其 database 的
也會以此目錄的相對目錄建立,理論上在 rescue mode 時管理系統上的 rpm 套件是可能的。

所以,我就把RedHat 9.0 disk 1 塞進光碟機,重新開機,輸入
linux rescue (進入救援模式)

開機完成後進到 mnt 的目錄下,可以看到兩個目錄

/mnt/source -- RedHat 9.0 disk 1 光碟的內容 (如果要回復之前的版本可在此取用rpm)
/mnt/sysimage -- 我掛點的系統內容

試試 rpm 指令,看看能不能用吧

rpm -qa --root /mnt/sysimage (yuho,真的可以用)

我再試試 rpm -qa --root /mnt/sysimage | grep glibc (看看 glibc 安裝的情況)

glibc-common-2.3.2-11.9
glibc-common-2.3.2-27.9
glibc-2.3.2-27.9

哈! 果然讓我找到兇手,舊的 glibc-common 居然還在沒被刪除,
小弟我比較大膽就自己 DIY 嘍

rpm -e glibc-common-2.3.2-11.9 --root /mnt/sysimage

(執行時很正常,沒什麼哀嚎的聲音)

應該沒問題了吧,我就執行 exit ,退出光碟,準備重新開機。

OK! 果然系統又恢復正常了。

以上是小弟的小小經驗,困擾我蠻久的(每次遇到要更新 glibc 總是怕怕的),
希望給和小弟有相同或相似困擾的朋友們一個參考。

沒有留言: