linux-/usr/lib64/libc.so.6: version `GLIBC_2.29' not found


今天执行脚本遇到了linux-/usr/lib64/lib.so.6: version `GLIBC_2.29' not found这个问题小看了一下是因为libc版本太低

在你准备升级GLIBC库之前,你要好好思考一下,你真的要升级GLIBC么?你知道你自己在做什么么?glibc详情glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现...

总的来说,不说运行在linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ll之类,都得依赖于它网上很多人有惨痛教训,甚至升级失败后系统退出后无法重新进入了。。

如果不是必要不要去动这个东西 如果动的时候ssh断开那你基本上没了 这个东西是很多命令的依赖 如果ssh在操作的时候断开 ls mv cp 都无法使用 如果是你在操作为完成的情况下ssh断了 你无法重新链接ssh 如果恰恰好你的vps上宝塔那么你还可以通过宝塔抢救一下 别问我怎么知道的 貌似宝塔的重命名 和文件移动不依赖这个lib

执行可以看到当前libc能够兼容的版本 应该是这么理解

strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_2

我的返回

root@lingling:~# strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_2
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_2.18
GLIBC_2.22
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27

刚刚好没有GLIBC_2.29 就需要自己手动编译一个(废话...)

安装glibc-2.29

wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
tar -zxvf glibc-2.29.tar.gz
cd glibc-2.29
mkdir build
cd build
../configure --prefix=/opt/glibc-2.29
make
make install

glibc 软连接

安装完成后, 建立软链指向glibc-2.29, 执行如下命令:

rm -rf /lib/aarch64-linux-gnu/libc.so.6   //先删除之前的软连接
ln -s /opt/glibc-2.29/lib/libc-2.29.so  /lib/x86_64-linux-gnu/libc.so.6

注意

删除libc.so.6之后可能导致系统命令不可用的情况, 可使用如下方法解决:

LD_PRELOAD=/opt/glibc-2.29/lib/libc-2.29.so
ln -s /opt/glibc-2.29/lib/libc-2.29.so /lib/x86_64-linux-gnu/libc.so.6

如果上述更新失败可使用如下命令还原:

LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.31.so 
ln -s /lib/x86_64-linux-gnu/libc-2.31.so /lib/x86_64-linux-gnu/libc.so.6    // libc-2.31.so 此项是系统升级前的版本

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - linux-/usr/lib64/libc.so.6: version `GLIBC_2.29' not found


Carpe Diem and Do what I like