栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

glibc升级失败及处理过程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

glibc升级失败及处理过程

glibc升级失败及处理过程

centos 6.2 升级glibc , 想用新的包代替旧的包,rm /lib64/libc.so.6 之后,系统部分命令用不了,远程登录也不行【幸好原来旧的ssh 连接还没断】
[root@VM_2centos lib64]# /bin/ls
/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
解决:

cd /lib64 LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so libc.so.6

OK了,原理:
LD_PRELOAD解决的原理是:linux调用so的库文件时,搜素路径为当前路径,再是系统lib目录。但是提供了一个LD_PRELOAD系统变量来改变这个顺序。设置LD_PRELOAD了后,库加载的顺序就改为:
搜素路径为: LD_PRELOAD ,当前路径,再是系统lib目录

又作死,新编译了glibc-2.14,把最新的libc.so 复制到/lib64和/lib下,做软连接
ln -sf /lib64/libc.so /lib64/libc.so.6
ln -sf /lib/libc.so /lib/libc.so.6

发现新源码编译安装的mysql启动不来,一堆内存错误

再次rm /lib/libc.so.6 , rm /lib64/libc.so.6 , rm /lib/libc.so rm /lib64/libc.so 【libc.so是新编译拷贝过来的包,原来的libc-2.12.so 还在,没删除】

再用上面的方法,没用了,报错:
[root@VM_2_centos lib64]# LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
ERROR: ld.so: object ‘/lib64/libc-2.12.so’ from LD_PRELOAD cannot be preloaded: ignored.
ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
[root@VM_2_centos lib64]#

下面的方法也不行
[root@VM_2_centos lib64]# /sbin/sln /lib64/libc-2.12.so /lib64/libc.so.6
Invalid link from “/lib64/libc-2.12.so” to “/lib64/libc.so.6”: 符号连接的层数过多

各种百度谷歌就不扯了,经腾讯的技术支持提醒,用新编译的库试了一下,发现命令是可以正常用的:
[root@VM_2_centos software]# LD_PRELOAD=/usr/lib64/glibc-2.14/libc.so ls
MySQL-5.5.47-1.el7.x86_64.rpm-bundle.tar MySQL-server-5.5.47-1.el7.x86_64.rpm cmake-2.8.5 mysql-5.5.25-linux2.6-x86_64

用下面的方法,问题解决:
LD_PRELOAD=/usr/lib64/glibc-2.14/libc.so cp /usr/lib64/glibc-2.14/libc.so* /lib64/

从下午2点折腾到晚上9点,记住这次教训,以后遇到问题脑筋转一下弯,怎么不早想到用新编译的库呢

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/599677.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号