glibc升级失败后的处理过程

系统环境:RHEL系列linux

内核:2.6.89 服务器

    升级我没有操做这里不写了,同事远程升级失败后,在现场处理的过程,记录一下。
ide

   安装失败后,输入任何命令都是无效的,系统只会重复"relocation error: /lib/tls/libc.so.6: symbol _dl_out_of_memory, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference"的错误信息,从新启动计算机在启动中就会失败,根本没法进入原Linux系统。spa

   上网搜索后获得相关信息。文库的方法是用光盘进rescue,根据个人实际状况,我把系统挂载到了个人debian7的ks服务器下。mount根分区,检查/lib/tls/libc.so.6 在不在。是什么状况,看到是这样的。blog

180930879.png

连接仍是原来的版本的,而后看看/lib有部分是新的了,两个地方不一致,搜到贴子说把/lib下的新的全链接回去就OK了能够启动,想了想反过来应当也能够。把/lib/tls/下的连接所有改成指向2.9版本的库文件,get

ln -sf libc-2.9.so libc.so.6 it

ln -sf libm-2.9.so libm.so.6 io

ln -sf libpthread-2.9.so libpthread.so.0 class

ln -sf librt-2.9.so librt.so.1 thread

另外,原/lib/tls/libthread_db-1.0.so必须被替换为Glibc2.9版本的libthread_db-1.0.so

cp -f ../libthread_db-1.0.so .

而后把盘拔回去,启动果真正常了。

运行:/lib/libc.so.6 能够查看版本。
网上还有朋友说,OS不重启的状况下,加个变量就能够执行命令了,可是我没有尝试,

export LD_PRELOAD=/lib/tls/libc-2.3.6.so

相关文章
相关标签/搜索