Eu matei por engano um processo do dpkg em execução em segundo plano e gostaria de reinstalar todos os pacotes para garantir que tudo esteja bem.
Primeiro, tentei obter uma lista de todos os pacotes e reinstalá-los
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
apt-get install --reinstall $(cat list.log)
Mas existem mensagens como:
E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.
Eu tentei apt-get -f install
, sem sucesso.
Como último recurso, reinstalei todos os programas que falharam nas somas de verificação:
dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a
O que devo fazer para reinstalar tudo?
Edit: Problema resolvido. A questão era outra coisa (veja os comentários). Eu entendo que é algo a evitar com o Debian.
debian
package-management
apt
alex_reader
fonte
fonte
Respostas:
Tente isso, lembrando que eu não testei:
Fontes:
man apt-get
fonte
dpkg --get-selections
lista de comandos também desinstala os pacotes.Apenas no caso, tente reinstalar cada pacote :
Você também pode adicionar a resposta sim a todas as perguntas.
fonte
dpkg --get-selections > list.log
primeiro.list.log
é retirado da pergunta.Em um dos recursos citados por Lucas Malor, encontrei um script chamado populator que parece estar próximo da solução. Se você definir a variável de seleção de pacotes na lista de todos os seus pacotes
PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)
você pode executar o script e reinstalar todos os pacotes, mas o sistema provavelmente terá alguns problemas. Seria melhor testá-lo em uma máquina virtual primeiro.
Aqui está uma variante do script no link acima:
Se for mostrado um erro de que pacotes específicos não podem ser reinstalados, execute este comando para tentar novamente:
fonte
Tente fazer isso, pois ele pegará sua saída e criará uma linha gigante com espaços que separam os nomes dos arquivos.
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log awk '$1=$1' ORS=' ' list.log > newlist.log apt-get install --reinstall $(cat newlist.log)
A única alteração na postagem original é adicionar a segunda declaração do awk, que provavelmente poderia ser feita em linha com a primeira para criar o arquivo desejado.
Essa alteração forçará o apt-get a baixar novamente novamente os pacotes e todas as dependências ausentes que não foram instaladas na primeira vez e os reinstalará em ordem.
Se o fizermos em linha, acredito que ficaria assim:
dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log
E certifique-se de realmente garantir que o sistema tenha pacotes corretos (ou mais recentes), limpe o cache apt, atualize-o e faça o download novamente de todos os arquivos (você pode pular as duas primeiras etapas se quiser apenas o que possui no cache reinstalado):
apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)
Eu tinha mais de 2k pacotes instalados em um sistema que atualizei com um problema. O uso do dpkg --configure -a concluiu a instalação (estava na fase final). Eu executei isso para fazer tudo reinstalar corretamente.
Ou conforme indicado em /superuser/298912/reinstall-debian- while-keeping-installed-packages- and-data :
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)
Apenas certifique-se de executar um "init 2" antes de qualquer reinstalação, pois alguns componentes do X ou do seu gerenciador de janelas favorito podem não gostar de ser reinstalados.
fonte
$(cat file)
token não citado em qualquer espaço em branco e fornece exatamente o mesmo resultado, independentemente de o arquivo ser delimitado por novas linhas ou espaços.--reinstall
pode ajudar, mas já foi administrado duas vezes antes disso.Ao usar o Aptitude, há uma maneira fácil e rápida de fazer isso:
sudo aptitude reinstall '~i'
que reinstalará todos os pacotes atualmente instalados.
fonte
Ao usar o RPM, no caso de você causar uma corrupção no banco de dados do pacote, existe uma opção para reconstruir esse banco de dados, impedindo que você precise passar basicamente por uma reinstalação. Como um usuário aqui apontou, isso é feito no Debian by
dpkg --configure -a
.fonte
dpkg --configure -a
é configurar todos os pacotes descompactados e não configurados. Veja as páginas de manual dodpkg
edpkg-reconfigure
também debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html