Reinstalando todos os pacotes Debian

15

Eu matei por engano um processo do dpkg rodando em segundo plano e eu gostaria de reinstalar todos os pacotes para ter certeza de que tudo está 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, eu 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?

Editar: problema resolvido. A questão era outra coisa (veja os comentários). Eu entendo que é algo a ser evitado com o Debian.

    
por alex_reader 12.06.2013 / 10:57

5 respostas

9

Tente isso, lembrando que eu testei e não :

dpkg --get-selections > selections
sudo dpkg --clear-selections
sudo dpkg --set-selections < selections
sudo apt-get --reinstall dselect-upgrade

Fontes:

por 12.06.2013 / 19:12
2

Apenas no caso, tente reinstalar cada pacote :

for i in $(cat list.log); do apt-get install --reinstall "$i"; done

Você também pode adicionar a resposta sim a todas as perguntas.

    
por 09.07.2015 / 08:59
2

Em um dos recursos citado por Lucas Malor Eu encontrei um script chamado populator que parece estar próximo da solução. Se você definir a variável de seleção de pacotes para a lista de todos os seus pacotes

PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)

você pode então 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 do link acima:

#!/bin/bash
#
# Script to pre-populate apt-get proxy for faster later downloads.
# It uses apt-get and wget to pull all the specified packages.
#

# Make sure only root can run our script
if [[ $EUID -ne 0 ]]; then
   echo "You're not root, are you?" 1>&2
   exit 1
fi

# Specify wanted packages
PKGLIST="exaile" 

# Clears out the local repository of retrieved package files
apt-get clean

# Resynchronize the package index files from their sources
apt-get update

# Re-install specified packages at the newest version. 
apt-get install --reinstall $PKGLIST

Se o erro for mostrado que pacotes específicos não podem ser reinstalados, execute este comando para tentar novamente:

sudo apt-get -y autoremove
    
por 06.02.2015 / 00:45
0

Ao usar o RPM, no caso de causar danos no banco de dados do pacote, há uma opção para reconstruir esse banco de dados, evitando que você tenha que passar basicamente por uma reinstalação. Como um usuário aqui apontou, isso é feito no Debian por dpkg --configure -a .

    
por 12.06.2013 / 18:46
0

Tente isso, já que ele vai pegar sua saída e criar uma linha gigante com espaços separando 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 mudança na sua postagem original é adicionar a segunda instrução awk, que provavelmente poderia ser feita em linha com a primeira para criar o arquivo desejado.

Esta alteração forçará o apt-get a baixar novamente os pacotes e todas as dependências que não foram instaladas na primeira vez e reinstalá-los em ordem.

Se fizermos isso em linha, acredito que seria assim:

dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log

E então certifique-se de realmente fazer o sistema ter os pacotes corretos (ou mais recentes), limpar o cache do apt, atualizá-lo e baixar novamente todos os arquivos (você pode pular os dois primeiros passos se quiser apenas o que tem 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 eu atualizei que tinha um desligamento. Usando o dpkg --configure -a terminou a instalação (estava na fase final). Em seguida, executei isso para fazer tudo reinstalar corretamente.

Ou conforme indicado em link :

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 dos componentes do X ou do seu gerenciador de janelas favorito podem não gostar de ser reinstalados.

    
por 09.02.2016 / 08:48