Centos7升级GLIBC 2.18遇到问题及回滚

文章目录

千万不要在Centos7上升级GLIBC,
千万不要在Centos7上升级GLIBC,
千万不要在Centos7上升级GLIBC!!!

在用vscode远程开发rust时遇到到Centos7版本遇到,GLIBC版本低问题,提示缺少GLIBC 2.18.

ERROR [12/22/2021, 11:28:41 AM]: Bootstrap error [Error: Failed to execute /root/.vscode-server/extensions/matklad.rust-analyzer-0.2.867/server/rust-analyzer --version
	at j0 (/root/.vscode-server/extensions/matklad.rust-analyzer-0.2.867/out/main.js:109:4032)
	at async N0 (/root/.vscode-server/extensions/matklad.rust-analyzer-0.2.867/out/main.js:109:1881)
	at async I0 (/root/.vscode-server/extensions/matklad.rust-analyzer-0.2.867/out/main.js:108:3977)
	at async lC (/root/.vscode-server/extensions/matklad.rust-analyzer-0.2.867/out/main.js:108:3808)
	at async Promise.all (index 0)]

查看GLIBC版本

ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.

在网上找到一个**“靠谱”**的升级办法

wget http://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=/opt/glibc-2.18
make -j4
sudo make install
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.18/lib

升级操作完后,执行任何命令会有如下提示

[root@bigdatatestenv01 ~]# ll
ls: relocation error: /opt/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
id: relocation error: /opt/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
[root@bigdatatestenv01 ~]# vim /etc/profile
vim: relocation error: /opt/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
id: relocation error: /opt/glibc-2.18/lib/libc.so.6: symbol _dl_find_dso_for_object, version GLIBC_PRIVATE not defined in file ld-linux-x86-64.so.2 with link time reference
...

最后查到有如下解决方式

libc.so.6是从外面新拷贝进来的,
在加载动态库libc.so.6时与系统库ld-linux-x86-64.so.2不兼容。
只需把新拷的libc.so.6库从加载目录中删除即可(删除新加入的,不要删除系统自带的,如果系统自带的已被删除,尝试一下从另一台机子拷贝一个过来试试),
mv用不了的话桌面环境进入目录删除,或利用工具Xshell的Xftp进入目录。

实际上不用这样处理,只需要把/etc/profile中的export LD_LIBRARY_PATH ...删除即可,方式可通过利用远程操作文件工具
不要升级,不要升级,不要升级!

PS:
glibc 是 GNU 发布的 libc 库,即 c 运行库。glibc 是 linux 系统中最底层的 api,几乎其它任何运行库都会依赖于 glibc。glibc 除了封装 linux 操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个作业系统。在 GNU/Linux 系统中,其 C 函式库发展史点出了 GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的 C 函式库,是 GNU/Linux 演进的一个重要里程碑。

你可能感兴趣的:(tools,OS,开发语言,后端)