Na maioria dos casos, isso deve ser relativamente fácil de corrigir. Você pode gerar uma lista de todos os pacotes instalados usando o diretório /lib
com:
dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,
Se você reinstalar esses pacotes, deverá corrigir o problema:
apt-get --reinstall $(dpkg -S /lib | awk -F': ' '{ print $1 }' | tr -d ,)
Isso, obviamente, depende do diretório excluído não ser crítico para apt-get
. Os pacotes necessários para o apt-get
funcionar teriam que ser instalados manualmente, talvez até mesmo sem dpkg
. Nesse caso, o pacote poderia ser extraído em outra máquina e os arquivos copiados no lugar, eles seriam reinstalados com apt
de qualquer maneira, portanto, isso não causaria nenhum outro problema.
Olhando minha própria lista de pacotes colocando arquivos em /lib
, vejo que os principais são o kernel (todos os módulos vão para /lib/modules
) e libc
. Estes são dois que quase certamente teriam que ser reinstalados para o sistema ser inicializável. Uma maneira de fazer isso seria instalar a partir de um sistema baseado no Debian. Se você baixar os pacotes necessários e montar a raiz do sistema de destino, você pode adicionar a opção --root
ao dpkg
lá para instalar, por exemplo:
dpkg --root=/path/to/target/root -i package1.deb package2.deb ...
A opção --root
também pode ser usada com o primeiro comando dpkg
, se necessário. É claro que com paciência e habilidade suficiente, deve ser possível reparar on-line. Se o comando dpkg
não funcionar, você sempre poderá procurar as dependências de pacote diretamente em /var/lib/dpkg/info
e procurar pacotes colocando arquivos em /lib
por meio dos arquivos .list
em /var/lib/dpkg/info
.
Para dar uma idéia do que pode ser alcançado, aqui está um blog sobre alguém que conseguiu recuperar um sistema Gentoo em execução, onde todos os pacotes foram desinstalados. É uma leitura interessante, e algumas das técnicas usadas (ou sugeridas nos comentários) podem ser aplicadas neste tipo de situação - link