
Excluí um link simbólico crítico - libc.so.6
. Eu tenho o arquivo para o qual ele deveria apontar, mas os comandos básicos como ln
ou wget
não funcionarão mais devido à falta do link. No entanto, echo
ou outros recursos internos do Bash funcionam.
Estou procurando uma maneira de recriar esse link simbólico.
Responder1
você pode usar ldconfig, ele recria o link simbólico:
# rm /lib/libc.so.6
rm: remove symbolic link `/lib/libc.so.6'? y
# ls -l /lib/libc*
ls: error while loading shared libraries: libc.so.6: cannot open shared object file:
# ldconfig
# ls -l /lib/libc*
[skip]
lrwxrwxrwx. 1 root root 12 May 11 07:59 /lib/libc.so.6 -> libc-2.12.so
acabei de testar, como você pode ver.
Responder2
CentOS 6 geralmente vem combusybox
, um conjunto de ferramentas Unix vinculado estaticamente, instalado no /sbin
. Você pode executá-lo assim:
/sbin/busybox ln -s libc-2.12.so /lib/libc.so.6
Responder3
Defina LD_PRELOAD para pré-carregar a biblioteca relevante. Eu tentei com libpthread e parece funcionar:
root@spirit:~# mv /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so.0-bak
root@spirit:~# chattr
chattr: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
root@spirit:~# LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0-bak chattr
Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files...
Responder4
Você pode definir LD_LIBRARY_PATH
a variável para incluir o diretório onde real libc.so.6
está:
export LD_LIBRARY_PATH="/dir/for/libc.so.6/:$LD_LIBRARY_PATH"
Além disso, execute ldconfig
para recriar os links. Isso deve fazer com que os comandos funcionem para que você possa usá ln
-los para consertar seu sistema.
Outra maneira seria inicializar via LiveCD e vincular o arquivo lá.