/Usr/lib/*.so.* excluído acidentalmente


9

Enquanto eu instalava o MRTG, por engano eu apaguei /usr/lib/*.so.*e/usr/lib/*.so

Agora não consigo inicializar meu sistema agora, ele fica preso na tela inicial e, quando pressiono o botão PAGEDOWN, vejo que há várias coisas que não estão sendo carregadas.

No entanto, o DHCP e o WebMin estão em execução e, a partir do Webmin, posso ver os logs do sistema que informam que os copos não estão carregando porque libpipeline.so.1está faltando e vários outros.

Meu computador está executando o 11.04


11
Cross postado em Unix e Linux
Marco Ceppi

use as perguntas específicas do Ask Ubuntu para Ubuntu. e não faça postagens cruzadas. Se você não tem certeza se é específico do ubuntu, pergunte aqui primeiro e migraremos se for específico do ubuntu.

2
também uma dica para o futuro ... se você soubesse que fez algo tão ruim antes de reiniciar ... não reinicie. deixe o sistema funcionando e inicie os reparos imediatamente. Eu já recuperou /bine /etcdessa forma no passado

Respostas:


5

Como você excluiu apenas /usr/lib/*e não /lib/*, provavelmente você pode se recuperar. Eu acho que todos os programas que você precisa criticamente para recuperar seu sistema usam apenas bibliotecas /usr/lib.

Inicialize em um prompt de login de texto. Se a inicialização normal não fornecer um login:prompt no modo de texto, inicialize apenas com serviços mínimos. Pressione e segure Shiftquando o computador iniciar para mostrar o prompt do Grub; você precisa pressionar a tecla depois que o BIOS inicializar o teclado, mas antes do carregamento do Grub, o que em algumas máquinas deixa apenas uma pequena janela de tempo e pode exigir várias tentativas. No prompt do Grub, pressione Downpara destacar a entrada de inicialização no modo de usuário único e inicialize-a.

Depois de ter uma linha de comando, execute apt-get --reinstall install PACKAGE1 PACKAGE2 …para reinstalar os pacotes que possuem arquivos /usr/lib. Você pode executar este snippet de shell para obter a lista de nomes de pacotes para reinstalar:

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

Alguns scripts de instalação de pacotes podem exigir a presença de bibliotecas de outros pacotes, portanto, pode ser necessário executar as reinstalações em uma ordem específica. Se você achar que os scripts de instalação de um pacote estão tentando usar um programa específico, poderá descobrir com quais bibliotecas esse programa precisa ldd. Por exemplo, isso indica que falta ao python três bibliotecas que você precisa reinstalar:

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1revela que esse arquivo vem zlib1ge assim por diante.

Se você achar que apt-getnão consegue baixar pacotes, primeiro baixe alguns pacotes-chave de um CD ao vivo. zlib1ge libssl0.9.8são dois pacotes dos quais você provavelmente precisará desde o início.


10

Você pode passar uma semana encontrando tudo o que está faltando ou pode passar uma hora apenas reinstalando a partir do CD e recuperando todos os seus pacotes antigos.

Eu sugiro que você inicialize em um ambiente LiveCD primeiro para obter backups das coisas primeiro (copie-os para uma unidade USB externa ou outra partição) e depois inicie novamente.


2
Exatamente, se você não reinstalar tudo, poderá esperar que falhas estranhas, travamentos etc. surjam meses depois.
JanC

3

/usr/libcontinha as bibliotecas compartilhadas de, francamente, tudo , exceto software crítico para a inicialização (é isso que entra /lib/e o que você não instalou por meio do gerenciador de pacotes (geralmente /usr/local/lib)).

Versão curta, você acabou de mangueira seu sistema.

Agora, se você ainda estiver /var/cache/apt/archivescheio de coisas, com um pouco de magia judiciosa, poderá recuperar a situação.

Verifique se ele ainda contém arquivos dos seguintes pacotes:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Esses pacotes contêm bibliotecas nas /usr/libquais é aptitudenecessário trabalhar. Se você puder encontrar os pacotes, /var/cache/apt/archivespoderá reinstalá-los manualmente e dpkg -i <packagename, depois que todos estiverem instalados, o aptitude poderá ser executado.

Em seguida, executando o comando, aptitude reinstall ~ivocê forçará a reinstalação de todos os pacotes já instalados, o que, esperamos, deve restaurar o sistema. Não posso dar garantias absolutas, porque o dano que você causou é realmente espetacular neste caso ...


1

Eu ficaria tentado a inicializar a partir de um live-CD do Ubuntu 11.04 e tentaria copiar os arquivos ausentes de volta.

Antes de fazer qualquer coisa, verifique se você possui bons backups de qualquer arquivo de dados gerado pelo usuário. Caso contrário, eu inicializaria um CD ao vivo, montaria o HDD somente leitura e faria backups o mais rápido possível.


0

Quando fiz algo semelhante, tive a sorte de perceber antes de tentar uma reinicialização. Neste ponto, seu sistema ainda estará funcionando principalmente. Minha abordagem foi criar uma caixa virtual com a mesma versão do sistema operacional e copiar os arquivos ausentes. se você permitir acesso ssh ao seu convidado da caixa virtual, poderá usar o rsync a partir de um terminal no sistema principal para sugar apenas os arquivos e links ausentes. No meu caso, faltavam poucos arquivos suficientes e era mais fácil / seguro copiar manualmente usando o scp, portanto o seguinte não foi testado (!)

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a é o modo de arquivamento (recursivo, copia links simbólicos e atributos, incluindo registros de data e hora, permissões etc.)

-u pula se a cópia de destino for mais recente

-v é detalhado

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.