事情经过:yum安装polkit-0.112-26.el7_9.1.x86_64工具,yum源用的和本地服务器不是一个版本yum安装完,会导致系统内核改变:
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)
正文:
系统centos6
用户root
(如果有按照百度教程升级GLIBC_2.14 or GLIBC_2.XX)的同学请先走第一步、第二步,没有安装高版本的GLIBC的同学直接进行第三部;
我们的目的是修改回原始的动态库;
第一步:确认动态库是否被修改
[root@tj-gongsi-quku lib64]# ll |grep libc.so.6
lrwxrwxrwx 1 root root 13 Sep 29 11:38 libc.so.6 -> libc.so.6_bak
lrwxrwxrwx 1 root root 12 Jun 21 09:09 libc.so.6_bak -> libc-2.17.so
[root@tj-gongsi-quku lib64]# ll |grep libc-
-rwxr-xr-x 1 root root 1926800 Jun 21 11:56 libc-2.12.so
-rwxr-xr-x 1 root root 1926800 Jun 21 11:57 libc-2.18.so
lrwxrwxrwx 1 root root 12 Jun 21 09:09 libc.so.6_bak -> libc-2.18.so
此时的libc.so.6链接到了libc-2.18.so
正常情况下:
[root@tj-vm119-qa-webapp lib64]# ll |grep libc
-rwxr-xr-x. 1 root root 1924768 Jun 20 11:37 libc-2.12.so
lrwxrwxrwx. 1 root root 18 Jul 3 17:46 libcap-ng.so.0 -> libcap-ng.so.0.0.0
-rwxr-xr-x. 1 root root 18672 Jun 25 2011 libcap-ng.so.0.0.0
lrwxrwxrwx. 1 root root 14 Jul 3 17:45 libcap.so.2 -> libcap.so.2.16
-rwxr-xr-x. 1 root root 16600 Dec 8 2011 libcap.so.2.16
-rwxr-xr-x. 1 root root 201632 Jun 20 11:37 libcidn-2.12.so
lrwxrwxrwx. 1 root root 15 Jul 6 19:41 libcidn.so.1 -> libcidn-2.12.so
lrwxrwxrwx. 1 root root 17 Jul 6 19:42 libcom_err.so.2 -> libcom_err.so.2.1
-rwxr-xr-x. 1 root root 14664 Mar 23 2017 libcom_err.so.2.1
-rwxr-xr-x. 1 root root 40872 Jun 20 11:37 libcrypt-2.12.so
lrwxrwxrwx. 1 root root 22 Jul 3 17:46 libcryptsetup.so.1 -> libcryptsetup.so.1.1.0
-rwxr-xr-x. 1 root root 94312 Jun 22 2012 libcryptsetup.so.1.1.0
lrwxrwxrwx. 1 root root 16 Jul 6 19:41 libcrypt.so.1 -> libcrypt-2.12.so
lrwxrwxrwx. 1 root root 12 Jul 6 19:41 libc.so.6 -> libc-2.12.so
和默认版本不一样的
原因是因为之前安装教程修改了环境导致的,我现在把动态库软连接改回来;
第二步:还原libc.so.6
rm -rf libc.so.6 #删除软连接,这步执行完成后所有命令无法使用,不必惊慌这里删除的是软连接,原文件还在
可以执行sln /lib64/libc-2.12.so /lib64/libc.so.6
此时确认动态库,发现已经还原了
[root@tj-gongsi-quku lib64]# ll |grep libc-
-rwxr-xr-x 1 root root 1926800 Jun 21 11:56 libc-2.12.so
-rwxr-xr-x 1 root root 1926800 Jun 21 11:57 libc-2.18.so
lrwxrwxrwx 1 root root 19 Sep 29 16:46 libc.so.6 -> /lib64/libc-2.12.so
但是此时问题依然存在
/lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)
第三步:cd /usr/lib64下
ll ibstdc++.so.6
确认libstdc++.so.6链接的目标文件
[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx 1 root root 30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.bak
lrwxrwxrwx 1 root root 19 Jun 21 09:09 libstdc++.so.6.bak -> libstdc++.so.6.0.19
正常情况下
[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx 1 root root 30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.13
也就是说默认的c++动态库被改了,那么改回来
这里直接删除不用担心命令用了,因为linux是c写的~
rm -rf libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.13 libstdc++.so.6
再查看一下
[work@tj-gongsi-quku lib64]$ ll |grep libstdc++.so.6
lrwxrwxrwx 1 root root 30 Sep 29 16:53 libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 987096 Mar 22 2017 libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 6431548 Dec 16 2016 libstdc++.so.6.0.19
lrwxrwxrwx 1 root root 19 Jun 21 09:09 libstdc++.so.6.bak -> libstdc++.so.6.0.19
这样就完成了