Eu apaguei um link simbólico crítico - libc.so.6
. Eu tenho o arquivo que ele deve 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.
linux
centos6
symbolic-link
Sebas
fonte
fonte
echo
.cat
está desativado ... na verdade, tudo estava.cat
é um programa externo. A página de manual do Bash Builtin Commands contém detalhes sobre o que poderia estar disponível.Respostas:
você pode usar o ldconfig, ele recria o link simbólico:
apenas testei, como você vê.
fonte
/lib/libc-2.12.so
no exemplo acima para/lib/foobar
. Bem, porcaria, não maismv
. Masldconfig -l /lib/foobar
é inteligente o suficiente para/lib/libc.so.6
apontar para o arquivo com o nome errado . (Os argumentos são obrigatórios, o padrãoldconfig
ignora os nomes de arquivos que não começam com "lib" e contêm ".so".) Nesse ponto, você podemv
voltar (oucp -p
se for paranóico / inteligente) e depois executarldconfig
novamente para limpar .O CentOS 6 geralmente vem com
busybox
um conjunto de ferramentas Unix vinculadas estaticamente, instalado no/sbin
. Você pode executá-lo assim:fonte
Defina LD_PRELOAD para pré-carregar a biblioteca relevante. Eu tentei com libpthread e parece funcionar:
fonte
sln
serve exatamente para esse propósito: consertar links simbólicos quando você não pode usar o ln regular porque você quebrou um link simbólico essencial. Para citar sua página de manual:fonte
Você pode configurar a
LD_LIBRARY_PATH
variável para incluir o diretório em que reallibc.so.6
é:Além disso, execute
ldconfig
para recriar os links. Isso deve fazer com que os comandos funcionem, para que você possa usar osln
comandos para corrigir seu sistema.Outra maneira seria inicializar via LiveCD e vincular o arquivo lá.
fonte
Use scp ou sftp para copiar uma versão do ln vinculada estaticamente. Verifique se é executável. Em seguida, use-o para corrigir o arquivo.
fonte