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

Posted 菜鸡啄米米

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次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系统,将原硬盘挂载上去,赶紧把数据先备份下来。剩下的就是系统恢复了。

 















以上是关于记一次CentOS5.7更新glibc导致libc.so.6失效,系统无法启动的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何更新glibc包

centos6.x升级glibc-2.17

Centos6.5 升级glibc解决“libc.so.6: version GLIBC_2.14

一次误删除libc.so.6后虚惊一场

记一次pthread_key_create导致的__nptl_deallocate_tsd段错误

解决"libc.so.6: version `GLIBC_2.14' not found"问题