glibc从2.12升级至2.18,升级失败,不要退出终端!
安装失败原因:一部分库有连接到新库,一部分没有,当时安装到/opt/glibc-2.18下,一开始都是好的,ssh也是,只是ssh的时候会报错:en_us.UF8找不到之类的locale文件不对,因为所有的连接都连接到了/opt下,所以就把locale文件拷贝到/opt下,看似正常了。但是等我安装了gcc 7.3后,ls,mv,ssh都不能用了。所以只能回退一下:
看一下新库的连接:
ls -l /lib64|grep 2.12|grep lrw|awk '{print "LD_PRELOAD=/lib64/libc-2.12.so ln -snf " $11" " $9}'|sed 's/2.12/2.18/g'
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libanl-2.12.so libanl.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libBrokenLocale-2.12.so libBrokenLocale.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libcidn-2.12.so libcidn.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libcrypt-2.12.so libcrypt.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libc-2.12.so libc.so.6
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libdl-2.12.so libdl.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libm-2.12.so libm.so.6
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnsl-2.12.so libnsl.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_compat-2.12.so libnss_compat.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_db-2.12.so libnss_db.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_dns-2.12.so libnss_dns.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_files-2.12.so libnss_files.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_hesiod-2.12.so libnss_hesiod.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_nisplus-2.12.so libnss_nisplus.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libnss_nis-2.12.so libnss_nis.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libpthread-2.12.so libpthread.so.0
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libresolv-2.12.so libresolv.so.2
LD_PRELOAD=/lib64/libc-2.12.so ln -snf librt-2.12.so librt.so.1
LD_PRELOAD=/lib64/libc-2.12.so ln -snf libutil-2.12.so libutil.so.1
上面显示的是要回退的,重要的是libc.so.6, librt,libpthread这几个,执行一半会有报错,因为这时候的LD_PRELOAD连接需要换成,如果命令显示segment fault或者找不到GLIBC说明有一半是连接的新库,则使用
LD_PRELOAD=/lib64/libc-2.128so
替换完之后正常命令可以使用,但是ssh还是无法登录:
报错:
ssh_exchange_identification: Connection closed by remote host
LD_PRELOAD=/lib64/libc-2.12.so ln -snf ld-2.12.so ld-linux-x86-64.so.2也替换回去,ssh可以正常使用