Como recriar um diretório '/ var / lib / dpkg' excluído?

5

Ontem, tive alguns problemas com /var/lib/dpkg/lock durante a atualização. Eu sabia que, nesses casos, a remoção do arquivo de bloqueio poderia resolver o problema. Então eu tentei fazer isso, mas por engano eu removi todo o diretório DPKG. Então agora eu não posso fazer nenhuma atualização, instalar, atualizar e assim por diante.

Eu tento via Software Center, Terminal, Qapt, Synaptic. Nenhum destes trabalhos porque todos eles fazem tais operações via dpkg . E como meu dpkg está corrompido, tenho problemas.

Como posso restaurar completamente o DPKG? Eu baixei o arquivo dpkg_1.16.1.2ubuntu7_amd64.deb (eu uso o Ubuntu de 64 bits do Ubuntu 12.04), mas o que fazer com ele no terminal? Clicar duas vezes no .deb abre o Centro de Software e você já sabe que não funciona.

P.S. Terminal dá esse erro:

dpkg: error: cannot read info directory: No such file or directory
E: Sub-process /usr/bin/dpkg returned an error code (2)
    
por Elvin Haci 20.08.2012 / 09:14

2 respostas

3

Ok, eu não tentei isso, mas deve funcionar, eu acho.

Primeiro inicialize a partir de um CD ao vivo.

Em seguida, abra um terminal e digite

sudo fdisk -l

A partir disso, você quer determinar a partição na qual sua instalação do Ubuntu está. Se você tiver apenas um disco rígido, será /dev/sdaX , em que X é o número da partição.

Em seguida, monte a partição da instalação do Ubuntu substituindo X pelo número de partição correto.

sudo mount /dev/sdaX /mnt

Em seguida, navegue até o diretório em que dpkg_1.16.1.2ubuntu7_amd64.deb é e use este comando:

sudo dpkg --root=/mnt -i dpkg_1.16.1.2ubuntu7_amd64.deb

Espero que isso funcione, e você pode reiniciar em sua instalação do Ubuntu e achar que dpkg foi reinstalado. Se houver algum erro, avise-me e tentarei ajudá-lo.

edit:

Estive lendo a% man_de% manpage e acho que o comando sugerido acima pode não funcionar. Aqui estão as seções relevantes da manpage para referência.

   --admindir=dir
          Change default administrative directory,  which  contains
          many   files   that  give  information  about  status  of
          installed or uninstalled  packages,  etc.   (Defaults  to
          /var/lib/dpkg)

   --instdir=dir
          Change default installation directory which refers to the
          directory where packages are to be installed. instdir  is
          also  the  directory  passed  to chroot(2) before running
          package's installation  scripts,  which  means  that  the
          scripts see instdir as a root directory.  (Defaults to /)

   --root=dir
          Changing  root  changes  instdir  to  dir and admindir to
          dir/var/lib/dpkg.

usando dpkg como sugeri definiria a pasta admin como --root=dir - a pasta que você excluiu.

Em vez disso, tente isto:

sudo dpkg --force-overwrite --instdir=/mnt -i dpkg_1.16.1.2ubuntu7_amd64.deb

Isso usará a pasta /mnt/var/lib/dpkg do liveCD, mas o sinal /var/lib/dpkg deverá fazê-lo instalar mesmo que ache que o pacote já está instalado.

Boa sorte!

edit2

Embora isso deva funcionar para reinstalar --force-overwrite , não acho que ele irá recriar as listas de pacotes que estão em dpkg . Seguir o conselho no comentário do izx para copiar os diretórios / arquivos de um liveCD e ir da sua provavelmente é sua melhor aposta.

    
por adempewolff 20.08.2012 / 09:37
0

Eu enfrentei uma situação semelhante recentemente. E a maioria das respostas que encontrei online não ajudaram muito.

Basicamente, outra opção que você tem é copiar /var/lib/dpkg de outra instalação existente. Você sempre pode instalar uma nova cópia de sua distribuição em uma máquina virtual (como o VirtualBox) e copiar o diretório dessa cópia limpa.

Eu tentaria a maioria das opções antes disso, então dê uma chance como último recurso. Eu tinha outro computador em casa executando a mesma distro, então copiei todo o diretório para a minha máquina, substituindo um /var/lib/dpkg corrompido. Certifique-se de fazer backup para poder retornar ao estado em que estava se isso não funcionar.

    
por JulioHM 06.03.2015 / 03:33

Tags