今天执行脚本遇到了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 此项是系统升级前的版本
俺是废物
big old!!!