Centos7.9安装glibc2.18后回滚到glibc2.17

对glibc的操作非常危险,如果您对Linux操作系统的操作仅限于查看别人的资料来解决问题的话,我还是比较真诚的劝退你了。只所以还是写下这篇博文,一是为了记录自己排错的过程,二是更正目前网络中一些不太正确的博文,防止将新手带入坑中。

centos7.9 在运行一些软件时,会出现/lib64/libc.so.6: version GLIBC_2.18 not found的提示,原因是centos7.9默认使用的是glibc 2.17。为了运行这类程序,我们理所当然的想到升级glibc。以下就是升级glibc 到 2.18的命令。大家感兴趣的话可以在测试环境中实验,如果没有充分的把握千万不要在生产环境中使用。

1.安装glibc 2.18

使用下面的命令安装glibc 2.18

wget https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build && cd build
../configure --prefix=/usr
make -j$(nproc)
make install

在执行上述命令时很顺畅,并没有报错提示,安装完成后,使用命令ldd --version,查看当前的glibc,发现已经是2.18了。并且再次前面报错的程序时能够正常运行了。

正当你感到如释重担的时候,可是当系统重启后,你会惊奇的发现已经无法进入桌面系统了。查了许多资料,问题指向是glibc 2.18版本的问题,只要把glibc 2.18 回滚到glibc 2.17,就会解决以上问题了。
在这里插入图片描述
重启系统后,我的虚拟机已经无法显示桌面了,好在ssh还可以登录。
在这里插入图片描述
进入/lib64目录,使用下面的命令查看当前glibc 2.18的相关信息。

cd /lib64
ll -h | grep "2\.18"

在这里插入图片描述

从上图我们可以发现,有很多软链接都指向了2.18的版本。我们可以到正常运行的系统中查看一下看看有什么区别。

在这里插入图片描述
通过对比发现,在构建glibc 2.18 时使用--prefix=/usr安装的glibc 2.18将软连接都改成2.18了。接下来我们只要把2.18改回2.17就应该能将glibc版本回滚了。

📓 请认真核查对应的软链接。

2.重新安装glibc

首先使用下面的命令重新安装glibc.

yum update
yum reinstall -y glibc

在这里插入图片描述

3.重新链接到glibc 2.17

进入/lib64目录,先将所有的glibc 2.18相关的连接库删除。

rm -rf ld-2.18.so libanl-2.18.so libBrokenLocale-2.18.so libc-2.18.so libcidn-2.18.so libcrypt-2.18.so libdl-2.18.so libm-2.18.so libnsl-2.18.so libnss_compat-2.18.so libnss_db-2.18.so libnss_dns-2.18.so libnss_files-2.18.so libnss_hesiod-2.18.so libnss_nis-2.18.so libnss_nisplus-2.18.so libpthread-2.18.so libresolv-2.18.so librt-2.18.so libutil-2.18.so

然后再删除libc.so.6,删除libc.so.6以后,很多常用的命令就无法使用了,我们使用sln命令进行重新链接。
在这里插入图片描述
重建glibc 2.17链接。

sln ld-2.17.so ld-linux-x86-64.so.2  
sln ld-2.17.so libanl.so.1
sln libBrokenLocale-2.17.so libBrokenLocale.so.1
sln libcidn-2.17.so libcidn.so.1
sln libcrypt-2.17.so libcrypt.so.1
sln libdl-2.17.so libdl.so.2
sln libm-2.17.so libm.so.6
sln libnsl-2.17.so libnsl.so.1
sln libnss_compat-2.17.so libnss_compat.so.2
sln libnss_db-2.17.so libnss_db.so.2
sln libnss_dns-2.17.so libnss_dns.so.2
sln  libnss_files-2.17.so libnss_files.so.2
sln libnss_hesiod-2.17.so libnss_hesiod.so.2
sln libnss_nisplus-2.17.so libnss_nisplus.so.2
sln libnss_nis-2.17.so libnss_nis.so.2
sln libpthread-2.17.so libpthread.so.0
sln libresolv-2.17.so libresolv.so.2
sln librt-2.17.so librt.so.1
sln libutil-2.17.so libutil.so.1

在这里插入图片描述
接下来重建libc.so.6链接到libc-2.17.so

sln libc-2.17.so libc.so.6

在这里插入图片描述

完成上述操作后,重启系统,桌面能够正常登录了。
在这里插入图片描述
然而事情远没有结束。

正常登录系统后,你会发现系统还比较卡顿,然后使用ldd --version命令查看当前的glibc 版本仍然是2.18.

同时我心中也有点暗自高兴,难道通过上面的一通操作把centos7的glibc版本已经正常升级到2.18了吗?接着我去运行之前有报错提示的程序,结果有点让我失望,还是提示/lib64/libc.so.6: version GLIBC_2.18 not found,看来目前的glibc版本已经是2.17了,只是ldd命令显示的不正常而已。

4.重新安装glibc相关软件包

首先使用以下命令查看当前的glibc 2.17相关的软件包。

rpm -qa | grep glibc

在这里插入图片描述
使用下面的命令重新安装glibc。

yum reinstall -y glibc-2.17-326.el7_9.x86_64 glibc-headers-2.17-326.el7_9.x86_64 glibc-devel-2.17-326.el7_9.x86_64 compat-glibc-2.12-4.el7.centos.x86_64 glibc-common-2.17-326.el7_9.x86_64 compat-glibc-headers-2.12-4.el7.centos.x86_64

在这里插入图片描述
再次使用ldd --version命令查看glibc的版本已经是2.17了。
在这里插入图片描述
重启系统,一切正常。

在这里插入图片描述

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

alfiy

欢迎请博主喝瓶矿泉水

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值