Force o reparo do dpkg

1

Eu cometi um erro terrível e deletei duas pastas do diretório /usr/lib no meu Debian. Eu deletei python2.7/ e pkgconfig/

Coisas que tentei corrigir sem sucesso:

  • sudo dpkg -i python2* - > "não foi possível encontrar bibliotecas independentes de plataforma" - > "/ usr / lib / pyton2.7 / py_compile.py nenhum arquivo"

  • até mesmo excluí-lo (python; para futura reinstalação) via sudo dpkg -i python2.7-minimal - > não posso remover porque python2.7-minimal depende do python2.7-minimal (> = ... .deb) e o python2.7 depende do python2.7-minimal (> = ..._ rc2.deb)

Então eu não posso reinstalar ou reparar os pacotes contanto que eles não sejam "configurados" pelo dpkg como apt-get install python mas também não posso removê-los para uma reinstalação limpa, já que são dependências de versões diferentes no dpkg e eu não sei como resolver isso.

Então, como eu posso remover completamente os pacotes com todas as dependências via dpkg ou apt para resolver a situação descrita acima?

    
por Marc M 26.06.2016 / 00:21

1 resposta

1

Se apt for borked, às vezes é possível definir manualmente as coisas corretamente com dpkg e o caminho completo do pacote em cache local. Veja como:

  1. cd para onde apt armazena os pacotes, ou seja, / var / cache / apt / archives /
  2. dpkg then ( conforme necessário ) o comutador para install, remove, purge ou whatnot, então o filename do pacote no diretório atual. Então, para instalar uma das várias versões do 'foobar' que foram sucessivamente instaladas recentemente, digite dpkg -i foobar<TAB> e a tecla '' preencherá o resto com bash autocompletion, ou mostre as versões disponíveis.
  3. Se dpkg disser que você precisa de 'fizban' , (ou deve se livrar de 'fizban' ), execute a etapa 2, com 'fizban '. Em seguida, tente o passo # 2 com 'foobar' novamente.
  4. Repita # 2 & # 3 até que o sistema esteja no estado desejado.

Isso pressupõe que os arquivos de pacote necessários ainda estejam armazenados em cache localmente. Às vezes os pacotes precisam ser caçados online. Nesse caso, o número da versão do pacote necessário pode ser um pouco incerto - nesses casos, /var/log/dpkg.log tem a resposta, apenas grep ou sed através do nome do pacote e mostrará as versões com as quais dpkg trabalhou até agora.

    
por 26.06.2016 / 04:45