web-dev-qa-db-fra.com

Réinstallation de tous les packages Debian

J'ai tué par erreur un processus DPKG en cours d'exécution et j'aimerais réinstaller tous les forfaits pour vous assurer que tout est suivi.

Tout d'abord, j'ai essayé d'obtenir une liste de tous les forfaits et de les réinstaller

dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
apt-get install --reinstall $(cat list.log)

Mais il y a des messages comme:

E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.

J'ai essayé apt-get -f install, sans succès.

En dernier recours, j'ai réinstallé tous les programmes qui ont échoué aux checksums:

dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a

Que dois-je faire pour réinstaller tout?

Edit : problème résolu. Le problème était autre chose (voir les commentaires). Je comprends que c'est quelque chose à éviter avec Debian cependant.

21
alex_reader

Essayez ceci, rappelez-vous que je l'ai fait non Testez-le:

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

Sources:

11
Marco Sulla

Juste au cas où, essayez de réinstaller chaque paquet:

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

Vous voudrez peut-être ajouter une réponse oui à toutes les questions.

3
Coward

Dans ne des ressources citée par Lucas Malor J'ai trouvé un script appelé Populator qui semble être proche de la solution. Si vous définissez la variable de sélection des paquets à la liste de tous vos packages

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

vous pouvez ensuite exécuter le script et réinstaller tous les packages, mais le système aura probablement des problèmes. Il serait préférable de le tester dans une machine virtuelle en premier.

Voici une variante du script du lien ci-dessus:

#!/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

Si une erreur est affichée que des packages spécifiques ne peuvent pas être réinstallés, exécutez cette commande pour réessayer:

Sudo apt-get -y autoremove
2
Ortomala Lokni

Essayez cela plutôt que cela prendra votre sortie et en faites une ligne géante avec des espaces séparant les noms de fichiers.

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)

Le seul changement de votre message d'origine est l'ajout dans la deuxième instruction AWK, qui pourrait probablement être effectuée en ligne avec le premier à créer le fichier souhaité.

Ce changement obligera APT-APT-OBTENIR À RECHERCHER correctement les packages et toutes les dépendances manquantes qui n'ont pas été installées la première fois et les réinstallent dans l'ordre.

Si nous le faisons en ligne, je crois que cela ressemblerait à cela alors:

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

Et ensuite assurez-vous que vous faites vraiment que le système dispose de correctifs corrects (ou de la dernière), nettoyez le cache APT, mettez-le à la mettre à jour, puis téléchargez tous les fichiers (vous pouvez ignorer les deux premières étapes si vous ne voulez que ce que vous avez dans le cache réinstallé):

apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)

J'avais plus de 2k packages installés sur un système que j'ai mis à niveau qui avait un raccrochage. Utilisation de DPKG --Configure -a a terminé l'installation (c'était en phase finale). J'ai ensuite couru cela pour que tout se réinstallent correctement.

Ou comme indiqué sur - https://superuser.com/questions/298912/Reinstall-debian-que -esprant-installed-packages-and-data :

Sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)

Assurez-vous simplement d'exécuter un "init 2" avant de réinstaller, car certains des composants de X ou de votre gestionnaire de fenêtres préféré ne souhaitent pas être réinstallés.

1
Anonymous Coward

Lorsque vous utilisez aptitude, il existe un moyen facile et rapide de le faire:

Sudo aptitude reinstall '~i'

qui réinstallera tous les paquets actuellement installés.

1
goetzc

Faire cela via apt est assez simple:

apt list --installed | cut --delimiter=/ --fields=1 | xargs apt reinstall -y

Les apt list --installed une partie fait exactement ce que l'on devinerait. Les | Tuyaux de caractère La sortie standard de la commande apt à l'entrée standard de la commande cut. Les cut --delimiter=/ la partie indique la commande cut à utiliser / comme délimiteur et --fields=1 raconte cut d'utiliser le premier champ, c'est-à-dire le texte avant le premier / qui apparaît dans la sortie du apt list --installed commande. Dans ce cas, le résultat de la commande cut est une liste de tous les packages installés sans toutes les informations supplémentaires dont nous n'avons pas besoin de la apt list --installed commande.

Le suivant | tuyes la sortie standard de la commande cut, la liste de tous les packages installés, à l'entrée standard de la commande xargs, qui, à son tour, invoque apt reinstall -y Pour chacun des packages actuellement installés.

Remarque: En fonction de votre configuration APT, la apt reinstall -y Partie peut installer des mises à jour sur vos packages existants au lieu des versions exactes que vous avez actuellement installées.

0
toputnal