关于glibc库升级带来的relocation error问题

glibc

Posted by Xiaohan on November 24, 2021

经验贴

事故起因

为了安装perl 库的一个包不小心升级了整个系统的glib库导致了relocation error

解决过程

解决过程中参考了这几位大神的答案总算解决了,下面是解决方案。

原因是升级了glibc的库后导致了原来的程序不可以使用,因此降级。

  • 创建临时软连接,使得ls命令可以使用:

根据每个人不同的老版本可以选择不同的版本号

1
export LD_PRELOAD=/lib64/libc-2.17.so
  • 查看现在的连接和所有的版本号
1
ls -ltr

从2.17升级到了2.19因此改变软连接

1
sln /usr/lib64/libc-2.17.so /lib64/libc.so.6
  • 还是报错并且是miniconda3

那就到miniconda3中的lib库里找寻

1
ls -ltr | grep "2.19"

找到相关的2.19的库与软连接,可以从lib64从将对应的2.17版本拷贝过来,重新连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
cp /lib64/libcrypt-2.17.so ./
cp /lib64/libcidn-2.17.so ./
cp /lib64/libc-2.17.so ./
cp /lib64/libBrokenLocale-2.17.so ./
cp /lib64/libanl-2.17.so ./
cp /lib64/ld-2.17.so ./
cp /lib64/libutil-2.17.so ./
cp /lib64/librt-2.17.so ./
cp /lib64/libresolv-2.17.so ./
cp /lib64/libpthread-2.17.so ./
cp /lib64/libnss_nisplus-2.17.so ./
cp /lib64/libnss_nis-2.17.so ./
cp /lib64/libnss_hesiod-2.17.so ./
cp /lib64/libnss_files-2.17.so ./
cp /lib64/libnss_dns-2.17.so ./
cp /lib64/libnss_db-2.17.so ./
cp /lib64/libnss_compat-2.17.so ./
cp /lib64/libnsl-2.17.so ./
cp /lib64/libm-2.17.so ./

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

  • 完成

不能瞎升级

还好不补救回来了,当时导致了服务器瘫痪,什么命令都用不了,先搜索了一下,在不关闭窗口的情况下才能解决。

先登录了别人的账号查看不影响其他人,然后着手解决自己的问题,终于完成了!

这块的知识还要补充~~

希望本文可以对你有些帮助!