Glibc错误恢复

来源:互联网 发布:中国汽车历年进口数据 编辑:程序博客网 时间:2024/05/16 00:52

这两天 Archlinux 官方库里更新了最新版的 glibc。系统更新的时候会提示 /lib 文件夹已存在。个人并没有仔细去考究这个提示的缘由,粗暴的一位和以前的 filesystem 之类的提示一样。于是强制更新了 glibc,结果爆出一堆错误。经过一系列的查证,原来这次更新 archlinux 吧 /lib 的内容都移动到了 /usr/lib,然后做了 /lib 的软链接指向 /usr/lib。但如果 /lib 中存在非系统文件,比如我安装的 virtualbox,会再其中放一些 module,就会导致软链失败,结果整个系统不能使用了。

再网上找到一些类似的问题的解决方案,总结了以下才吧问题搞定。

首先重启机器,再菜单页,编辑启动项,添加 init=/usr/lib/ld-2.26.so /bin/sh,然后启动系统后会进到命令行模式。

接着输入 /usr/lib/ld-2.26.so /bin/mount -o remount,rw / 重载文件系统为可写。

然后将 /lib 里的残余文件都移动到 /usr/lib,并删除 /lib 设置好 /lib 到 /usr/lib 的软链

/usr/lib/ld-2.26.so /bin/mv /lib/* /usr/lib
/usr/lib/ld-2.26.so /bin/rmdir /lib
/usr/lib/ld-2.26.so /bin/ln -s /usr/lib /lib

接下来就是先把系统再更新一遍,因为刚才 glibc 出错导致更新失败了。

/usr/lib/ld-2.26.so /bin/pacman -Sfyu

这下应该系统恢复正常了。


胆大手贱.

http://blog.csdn.net/johnnywww/article/details/7623703

参考这里升级glibc, 其中 export CFLAGS="-g -O2 -march=i486" 改为 export CFLAGS="-g -O2 -march=x86_64"

更新完后报错. 所有的应用都报错 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.

准备恢复

ln 不能用.  export LD_PRELOAD="/lib/libc-2.3.4.so" 然后 /lib64/ld-2.3.4.so /bin/ln -sf xx xx, /lib64/ld-2.3.4.so /bin/ls -ltr xx  就可以用了.

ERROR: ld.so: object '/lib/libc-2.3.4.so' from LD_PRELOAD cannot be preloaded: ignored. 这个错误无视

/lib64/ld-2.3.4.so /bin/ls -ltr /lib64/ 找到今天修改的链接. 全部改回去.

比如: libutil.so.1 -> libutil-2.5.so 就改成 /lib64/ld-2.3.4.so /bin/ln -sf /lib64/libutil-2.3.4.so /lib64/libutil.so.1

大部分是一致的 2.3.4. 有些没有就找其他较低版本. 还没有就算了.

unset LD_PRELOAD

结束

http://blog.csuboy.com/glibc-update-to-2-6/ 标记下. 这种升级方式更安全
原创粉丝点击