系統環境: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 在不在。是什麼情況,看到是這樣的。
鏈接還是原來的版本的,然後看看/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