Linux系统命令无法使用(glib库相关问题)

1.背景描述

        Yum强制安装了一些软件,安装软件成功无报错,完成后不久突然发现系统出问题了,所有的命令无法使用了,如ls、mv、cat等基本命令报错。

relocation error:

/lib64/libpthread.so.0: symbol_libc_dl_error_tsd version GLIBC_PRIVATE not defined......

        重启系统之后,系统让循环输入用户名,不让输入密码,无法登陆了,远程也不让连接报错

2.原因分析

        依赖库出问题了,导致产生上述两个问题

3.解决过程

        (1)重启进入单用户模式

        (2)将只读(ro)修改为rw init=/sysroot/bin/sh  【ro后的‘\’为换行无需在意】

        (3)获取root权限

        (4)查看cat /var/log/messages 发现日志提示sendmail该命令执行时依赖库/lib64/libc.so.6 中不支持GLIBC_2.3.4版本 等等

        (5)查看libc.so.6 中支持的GLIBC版本 ,发现基本上都包含

strings /usr/lib64/libc.so.6|grep -E “^GLIBC*”

        (6) 检查/lib64/目录下libc.so.6 链接的源文件,发现该文件链接的源文件为 “glibc-2.27.so”

同时发现该目录下存在另一个低版本的 “glibc-2.17.so”

        --该目录下的 “glibm”文件链接的源文件是glibm-2.17.so

        --该目录下的 “glibdl”文件链接的源文件是glibm-2.17.so

        通过上面情况判断安装时更新了该库,后找同批服务器查看只有glibc-2.17.so的依赖库。

所以我直接删除glibc-2.27.so相关的文件,他的链接自动关联到了glibc-2.17.so

        (7)到此无法登陆系统的问题解决了

        后重启服务器,发现可以输入用户名和密码了,~~~成功登陆了系统,基本命令也能正常使用了。。。。

4.应用无法启动

        恢复应用时java命令报错

[root@localhost lib64]# java

Error: dl failure on line 893

Error: failed /data/jdk8u252-b09/jre/lib/amd64/server/libjvm.so, because /lib64/libm.so.6: 

symbol __strtof128_nan, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

5.原因分析

         意思是javahome中的libjvm库调用 /lib64/libm.so.6,但是该库在libc.so.6 中没有被定义。

6.解决方式

        因为源文件还在所以将链接全部删除重新创建

rm -rf /lib64/libc.so.6

rm -rf /lib64/libm.so.6

rm -rf /lib64/libdl.so.6

LD_PRELOAD="/lib64/libm-2.17.so" ln -s /lib64/libm-2.17.so /lib64/libm.so.6

 LD_PRELOAD="/lib64/libc-2.17.so" ln -s /lib64/libc-2-2.17.so /lib64/libc.so.6

 LD_PRELOAD="/lib64/libdl-2.17.so" ln -s /lib64/libdl-2.17.so /lib64/libdl.so.6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值