Linux之libc.so.6软链接错误导致ls等基础命令无法使用
有一台服务器曾经执行了glibc版本升级,升级失败后回退到了glibc2.17版本,升级后产生的glibc2.25版本文件保留在服务器上没有删除。
1、故障状态
此时输入ls,find,vim等基础命令全部会报错“/lib64/libpthread.so.0: symbol __libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference”
查看glibc版本
执行ldd --version命令发现可以执行,glibc版本还是2.17,实际上测试一些lib库的软链接错误链接到了2.25版本。
4、重建libc.so.6的软链接
使用ln -s命令创建软链接需要依赖libc.so.6,但是如果libc.so.6存在又无法创建软链接,删除后没有libc.so.6了,ln命令执行又会报错。
幸运的时还有sln这个命令。
[root@s146 lib64]# sln /usr/lib64/libc-2.17.so /lib64/libc.so.6
当然仅仅这一个软链接是不够的。
[root@s146 lib64]# sln /usr/lib64/ld-2.17.so /usr/lib64/ld-linux-x86-64.so.2
[root@s146 lib64]# sln /usr/lib64/libm-2.17.so /usr/lib64/libm.so.6
这三个软链接更新后,ls等基础命令不再报错。总算是松了一口气。
[root@s146 lib64]# which ls
alias ls=‘ls --color=auto’
/usr/bin/ls
[root@s146 lib64]# ls -h |grep “2.25”
ld-2.25.so
libBrokenLocale-2.25.so
libc-2.25.so
libdl-2.25.so
libm-2.25.a
libm-2.25.so