系统环境:RHEL系列

内核:2.6.89 

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

   安装失败后,输入任何命令都是无效的,系统只会重复"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系统。

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

glibc升级失败后的处理过程_error

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

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

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

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

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

另外,原/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