删除符号链接libc.so.6后如何恢复?

在我们的服务器中, 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取决于您的版本。

我只是这样做,它的工作。

总之,不要删除链接。 馊主意。