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

41,284

Solution 1

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

Solution 2

Try:

LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6

Note: The actual version depends on your library.

Solution 3

This helped in my case (the actual version depends on your library):

ldconfig -l -v /lib/libc-2.13.so

Solution 4

Boot using a live cd like Knoppix or whatever and fix the missing link after mounting the disk with the "broken" system out of the running live system.

Solution 5

Note, for 64 bit:

LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6

This worked great for me

If you are not in that directory of course it will be something like:
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

Share:
41,284
perreal
Author by

perreal

Escape. Walk out like somebody suddenly born into color. Do it now.

Updated on June 22, 2021

Comments

  • perreal
    perreal almost 3 years

    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