glibc升級失敗後的處理過程

系統環境:RHEL系列

內核:2.6.89 

    升級我沒有操作這裏不寫了,同事遠程升級失敗後,在現場處理的過程,記錄一下。

   安裝失敗後,輸入任何命令都是無效的,系統只會重複"relocation error: /lib/tls/libc.so.6: symbol _dl_out_of_memory, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference"的錯誤信息,重新啓動計算機在啓動中就會失敗,根本無法進入原Linux系統。

   上網搜索後得到相關信息。文庫的方法是用光盤進rescue,根據我的實際情況,我把系統掛載到了我的debian7的ks服務器下。mount根分區,檢查/lib/tls/libc.so.6 在不在。是什麼情況,看到是這樣的。

180930879.png

鏈接還是原來的版本的,然後看看/lib有部分是新的了,兩個地方不一致,搜到貼子說把/lib下的新的全連接回去就OK了可以啓動,想了想反過來應當也可以。把/lib/tls/下的鏈接全部改爲指向2.9版本的庫文件,

ln -sf libc-2.9.so libc.so.6

ln -sf libm-2.9.so libm.so.6

ln -sf libpthread-2.9.so libpthread.so.0

ln -sf librt-2.9.so librt.so.1

另外,原/lib/tls/libthread_db-1.0.so必須被替換爲Glibc2.9版本的libthread_db-1.0.so

cp -f ../libthread_db-1.0.so .

然後把盤拔回去,啓動果然正常了。

運行:/lib/libc.so.6 可以查看版本。
網上還有朋友說,OS不重啓的情況下,加個變量就可以執行命令了,但是我沒有嘗試,

export LD_PRELOAD=/lib/tls/libc-2.3.6.so





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章