【原創】大叔經驗分享(27)linux服務器升級glibc故障恢復


redhat6系統默認安裝的glibc-2.12,有的軟件依賴的是glibc-2.14,這時需要升級glibc,下載安裝 http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

# ./configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
# make
# make install

結果make install報錯,同時除了cd外各種命令都用不了,會報各種shared libraries: *: cannot open shared object file: No such file or directory

ls: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory

這些shared libraries都位於/lib64/下,而且此時機器無法遠程登錄,
現在只有一個終端root賬號登錄在服務器上,除了能執行cd之外什么都做不了,omg
各種google都無法解決,自己努力

1 首先嘗試從其他服務器遠程傳輸/lib64/下的所有文件和link到本機,但是各種傳輸命令都不能用,比如nc、scp等

2 其次懷疑有可能是link損壞,嘗試手工重建報錯的link

# ln -s libtinfo.so.5.7 libtinfo.so.5
ln: creating symbolic link `libtinfo.so.5': File exists

雖然ls不能用,但是看起來/lib64/下各種文件和link都還在,那為什么會報No such file or directory?

3 再次通過export查看一下當前的環境變量(export還能用):

# export
declare -x LD_LIBRARY_PATH="/usr/local/lib"

嘗試修改LD_LIBRARY_PATH,增加/lib64:

export LD_LIBRARY_PATH=/lib64:$LD_LIBRARY_PATH

很多命令居然可以用了,這次glibc升級的過程是這樣的,以其中一個library為例:

安裝之前:

-rwxr-xr-x 1 root root 161776 Jun 19 2018 ld-2.12.so
lrwxrwxrwx 1 root root 10 Jun 19 2018 ld-linux-x86-64.so.2 -> ld-2.12.so

安裝之后:

-rwxr-xr-x 1 root root 161776 Jun 19 2018 ld-2.12.so
-rwxr-xr-x 1 root root 838308 Jan 24 15:41 ld-2.14.so
lrwxrwxrwx 1 root root 10 Jan 24 16:28 ld-linux-x86-64.so.2 -> ld-2.14.so

將這次安裝的改動回滾,即將所有的link都改為指回2.12版本

# ls -l /lib64|grep 2.14|grep lrw|awk '{print "ln -snf "$11" "$9}'|sed 's/2.14/2.12/g'
ln -snf ld-2.12.so ld-linux-x86-64.so.2
ln -snf libBrokenLocale-2.12.so libBrokenLocale.so.1
ln -snf libanl-2.12.so libanl.so.1
ln -snf libc-2.12.so libc.so.6
ln -snf libcidn-2.12.so libcidn.so.1
ln -snf libcrypt-2.12.so libcrypt.so.1
ln -snf libdl-2.12.so libdl.so.2
ln -snf libm-2.12.so libm.so.6
ln -snf libnsl-2.12.so libnsl.so.1
ln -snf libnss_compat-2.12.so libnss_compat.so.2
ln -snf libnss_dns-2.12.so libnss_dns.so.2
ln -snf libnss_files-2.12.so libnss_files.so.2
ln -snf libnss_hesiod-2.12.so libnss_hesiod.so.2
ln -snf libnss_nis-2.12.so libnss_nis.so.2
ln -snf libnss_nisplus-2.12.so libnss_nisplus.so.2
ln -snf libpthread-2.12.so libpthread.so.0
ln -snf libresolv-2.12.so libresolv.so.2
ln -snf librt-2.12.so librt.so.1
ln -snf libutil-2.12.so libutil.so.1

全部執行一遍,故障恢復,各種命令都可以使用,機器也恢復遠程登錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM