记一次CentOS5.7更新glibc导致libc.so.6失效,系统无法启动


 

以下是错误示范,错误过程还原,请勿模仿!!!

wkhtmltopdf 启动,提示/lib64/libc.so.6版本过低

$ ./wkhtmltopdf http:www.baidu.com 1.pdf
./wkhtmltopdf: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by ./wkhtmltopdf)
./wkhtmltopdf: /lib64/libc.so.6: version `GLIBC_2.10' not found (required by ./wkhtmltopdf)
./wkhtmltopdf: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./wkhtmltopdf)

查看系统glibc版本,发现最高是2.5,需要升级到2.10

$ strings /lib64/libc.so.6 |grep GLIBC_
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_PRIVATE

当时并不清楚glibc的重要性,看是版本过低,就想着升级呗

下载了个glibc2.10版本

$ mkdir build // 在glibc-2.14目录下建立build文件夹 $ cd build // 进入build目录 $ ../configure --prefix=/usr/local/glibc // 配置glibc并设置当前glibc-2.14安装目录 $ make && make install // 编译安装glibc-2.14库

安装完成后, 建立软链指向glibc-2.10, 执行如下命令:

$ rm -rf /lib64/libc.so.6 // 先删除先前的libc.so.6软链 $ ln -s /usr/local/glibc-2.10/lib/libc-2.10.1.so /lib64/libc.so.6

此时系统报错sgment fault,通过ldconfig重新恢复,libc.so.6重新指向libc-2.5.so,我的升级目的没有达到,岂能罢休?看到/lib64下有libc-2.5.so,

于是“灵机一动”,把libc-2.10.1.so也复制到/lib64下,$ ln -s /lib64/libc-2.10.1.so /lib64/libc.so.6

这下成功将libc.so.6指向了libc-2.10.1.so了

可是悲催的是系统各种命令都不能再使用:

/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

ssh远程连接也中断了,无法再连接,本机上无法打开终端。无可奈何,我做了一个更加可怕的决定,重启!

于是乎,CentOS 5.11,GG!

 

以上是错误示范,错误过程还原,请勿模仿!!!

事情搞完了,系统起不来了,可是里面的数据不能丢!咋办啊?

不敢乱动那个硬盘,找了个其他硬盘,装上了相同的CentOS 5.11系统,将原硬盘挂载上去,赶紧把数据先备份下来。

重新将libc.so.6指向libc-2.5.so:

[root@localhost lib64]#ln -s libc-2.5.so libc.so.6

卸下替用的硬盘,原硬盘的系统恢复正常。CentOS 5.11 正常跑了 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM