How to recover after deleting the symbolic link libc.so.6?

perreal picture perreal · Sep 3, 2012 · Viewed 37.5k times · Source

In our server the symbolic link to libc.so.6 has been deleted. Now none of the binaries in the system work. To fix this, I tried:

/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

which, as expected, gives me:

/bin/ln: error while loading shared libraries: libc.so.6: 
    cannot open shared object file: No such file or directory

I also tried:

/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

with the same result. Further unsuccessful attempts include cp, mv, cat.

I'm connected via ssh and I believe I will not be able to open another session after closing this one. Is there a way to fix this system (using bash built-ins perhaps)?

[edit] I did:

while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6

to copy the file and tried with:

/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

and got:

/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid

Answer

Simon Richter picture Simon Richter · Sep 3, 2012

You could simply run ldconfig. Most distributions ship this as a static binary.