升级GLIBC,导致库文件出错
上周在debian下安装winrar,要求升级glibc到2.4,而deiban4.0自带的glibc是2.3.6版本的(可是/lib/libc.so.6 查看版本).就按着提示直接用apt-get安装glibc,没装成功反而导致无法进入系统。开机的时候加载一半时候,提示/lib/tls/i686/cmov/libc.so.6共 享链接文件无法加载。可能是之前升级库文件没有成功的原因.后来用ubuntu光盘进入系统,把debian的根目录挂载进来。查看了 /lib/tls/i686/cmov下的查看libc.so.6,它是链接到libc-2.3.6的一个文件下,链接并没有出,.还是删了这个文件重新做了个软 链接.
rm -rf libc.so.6
rm -rf libpthread.so.0
ln -sf libc-2.3.6.so libc.so.6
ln -sf libpthread-2.3.6.so libpthread.so.0
(因为启动的时候提示到这两个文件错误,所以只对这两个文件做了一下软件链接)
重启后,还是无法进入图形系统,不过能进基本系统。而且在使用一些基本命令还是会错误,如使用ls命令时会提示"ls:relocation error:/lib/tls/i686/cmov/libpthread.so.o:symbol errno,version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference"。由此看来库文件的问题还是没有解决。由于在升级glibc主要是对/lib库中的libc.so.6,libm.so.6, libpthread.so.0和librt.so.1这四个文件的修改(参考文章)。所以问题应该在这四个文件上面。用ubuntu光盘进入系统,把原系统挂载把/lib下的这个四文件拷 贝到/lib/tls/i686/cmov下.再次启动就可以了。
#cp -a /lib/tls/i686/cmov /homa/lanazou(备份一下)
#cd /lib/tls/i686/cmov
#rm -rf libc.so.6 libm.so.6 libpthread.so.0 librt.so.1
#rm -rf libc-2.3.6.so libm-2.3.6.so libpthread-2.3.6.so librt-2.3.6.so
# ln -sf libc-2.3.6.so libc.so.6
# ln -sf libm-2.3.6.so libm.so.6
# ln -sf libpthread-2.3.6.so libpthread.so.0
# ln -sf librt-2.3.6.so librt.so.1
glibc库,是系统中最核心的共享库和工具,所以最好不要覆盖系统默认的,如果盲目覆盖,很可能导致整个系统瘫痪,因为一般更新glibc库时,其它所有依赖libc库的共享库都需要重新被编译一遍.所以要做了备份工作.防止系统崩溃.