在我们的服务器中, libc.so.6
的符号链接已被删除。 现在系统中没有任何二进制文件可以工作。 为了解决这个问题,我尝试了:
/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
正如所料,这给了我:
/bin/ln: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
我也试过:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath /lib/libc.so.6 \ --library-path /lib/libc-2.11.3.so \ /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
结果相同。 进一步不成功的尝试包括cp,mv,cat。
我通过ssh连接,我相信在closures这个之后我将无法打开另一个会话。 有没有办法来解决这个系统(也许使用bash内置)?
我做了:
while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6
复制文件并尝试:
/lib/ld-linux-x86-64.so.2 --inhibit-rpath libc.so.6 --library-path . \ /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6
并得到:
/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid
你可以简单地运行ldconfig
。 大多数发行版都将其作为静态二进制文件发布
这有助于我的情况(实际版本取决于你的图书馆):
ldconfig -l -v /lib/libc-2.13.so
尝试:
LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6
注意:实际版本取决于您的图书馆。
使用Knoppix之类的Live CD启动,并在运行正在运行的系统中安装带有“损坏”系统的磁盘后修复丢失的链接。
请注意,对于64位:
LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6
这对我很好
如果你不在那个目录当然会是这样的:
LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.13.so ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib/x86_64-linux-gnu/libc.so.6
如果你之前做过一个ls命令,并且知道libc的版本是什么,
ldconfig -l -v /lib64/libc-2.x.so
其中x
是你的版本的作品。 请注意,它可能是一个lib64或lib取决于您的版本。
我只是这样做,它的工作。
总之,不要删除链接。 馊主意。