Réinstaller tous les paquets Debian

Jai tué par erreur un processus dpkg fonctionnant en arrière-plan et je voudrais réinstaller tous les paquets pour être sûr que tout va bien.

Dabord, jai essayé dobtenir une liste de tous les paquets 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. 

Jai essayé apt-get -f install, sans succès.

En dernier recours, jai réinstallé tous les programmes qui ont échoué sommes de contrôle:

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

Que dois-je faire pour tout réinstaller?

Modifier: Problème résolu. Le problème était autre chose (voir les commentaires). Je comprends cependant que cest quelque chose à éviter avec Debian.

Commentaires

  • Jai récemment eu un plantage en essayant dinstaller un paquet. Quand jai redémarré et jai essayé de réinstaller ce paquet, jai reçu le message,  » E: dpkg a été interrompu, vous devez exécuter manuellement ‘ dpkg –configure -a ‘ pour corriger le problème. « . Lexécution de cette commande a supprimé ledit package et ses fichiers de configuration. Jai ensuite pu installer le à partir de zéro. Essayez de lancer cette commande.
  • Il n’a ‘ rien fait, donc je suppose que rien n’est cassé. Jessaierai plus tard de vérifier si mes problèmes de pilote sont résolus.
  • Réinstaller tous les packages == vraiment mauvaise idée. (a) Cela ‘ est presque toujours inutile (b) cela échouera probablement ( c) Si votre système est vraiment en mauvais état, réinstallez-le. Résolvez simplement les problèmes que vous voyez réellement.

Réponse

Essayez ceci, en vous rappelant que jai fait pas tester:

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

Sources:

Commentaires

  • Mon problème était complètement différent: je ne démarrais pas le bon noyau (!). Jaccepterai votre réponse car elle semble faire ce que je voulais (mais non testée également).
  • Cela ne fonctionnera pas ‘ et brisera complètement le système. La ligne 3 désinstallera apt, donc il ne sera pas ‘ possible de tout réinstaller par la suite.
  • @rkjnsn: Jai mis à jour la réponse, vérifiez si cela fonctionne.
  • En essayant de faire cela, rien nest réinstallé, bien que le fichier de sélection soit rempli: pi @ prodpi ~ $ sudo apt-get –reinstall dselect-upgrade Lecture des listes de paquets … Terminé Construction de larborescence des dépendances État de lecture information … Terminé 0 mis à jour, 0 nouvellement installé, 0 à supprimer et 0 non mis à niveau. une idée?
  • Une des raisons pour lesquelles je pense que votre code na pas fonctionné ‘ est que la commande dpkg --get-selections désinstaller également packages.

Réponse

Lorsque vous utilisez Aptitude, il existe un moyen simple et rapide de le faire:

sudo aptitude reinstall "~i"

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

Commentaires

  • Sympa et concis!

Réponse

Au cas où, essayez de réinstaller chacun package :

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

Vous pouvez également ajouter loption de réponse oui à toutes les questions.

Réponse

Dans lune des ressources citées par Lucas Malor jai trouvé un script appelé populator qui semble être près de la solution. Si vous définissez la variable de sélection des packages sur la liste de tous vos packages

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

vous pouvez alors 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 dabord sur une machine virtuelle.

Voici une variante du script à partir 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 apparaît que des packages spécifiques ne peuvent pas être réinstallés, exécutez cette commande pour réessayer:

sudo apt-get -y autoremove 

Réponse

Essayez plutôt ceci car il prendra votre sortie et en fera 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 à votre message dorigine est lajout de la deuxième instruction awk, ce qui pourrait probablement être fait en ligne avec le premier pour créer le fichier que vous voulez.

Ce changement forcera apt- get pour retélécharger correctement les packages et toutes les dépendances manquantes qui nont pas été installées la première fois et les réinstaller dans lordre.

Si nous le faisons en ligne, je pense que cela ressemblerait à ceci:

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

Et puis assurez-vous que le système a vraiment les bons packages (ou les derniers), nettoyez le cache apt, mettez-le à jour, puis reté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)

Javais plus de 2k paquets installés sur un système que jai mis à jour et qui avait un blocage. Lutilisation de dpkg –configure -a a terminé linstallation (cétait dans la phase finale). Jai ensuite exécuté ceci pour que tout se réinstalle correctement.

Ou comme indiqué à ladresse https://superuser.com/questions/298912/reinstall-debian-while-keeping-installed-packages-and-data :

sudo apt-get install --reinstall $(dpkg --get-selections | grep -w "install$" | cut -f1)

Assurez-vous simplement de lancer un « init 2 » avant toute réinstallation, car certains des composants de X ou votre gestionnaire de fenêtres préféré peut ne pas aimer être réinstallé.

Commentaires

  • Sauf si vous ‘ avez modifié IFS , sans guillemets $(cat file) marque sur nimporte quel espace et donne exactement le même résultat que le fichier soit délimité par des retours à la ligne ou des espaces. --reinstall pourrait aider mais a déjà été donné deux fois avant cela.

Réponse

Faire cela via apt est assez simple:

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

Le apt list --installed part fait exactement ce que lon pourrait deviner. Le caractère | redirige la sortie standard de la commande apt vers lentrée standard de la cut commande. La partie cut --delimiter=/ indique à la commande cut dutiliser / comme délimiteur, et --fields=1 indique à cut dutiliser le premier champ, cest-à-dire le texte précédant le premier / que apparaît dans la sortie de la commande apt list --installed. 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 navons pas besoin de la part de apt list --installed commande.

La prochaine | redirige la sortie standard de la commande cut, la liste de tous les packages, à lentrée standard de la commande xargs, qui, à son tour, appelle apt reinstall -y pour chacun des packages actuellement installés .

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

Réponse

Lors de lutilisation RPM, dans le cas où vous causeriez une corruption dans la base de données du package, il existe une option pour reconstruire cette base de données, vous évitant ainsi davoir à passer par b asically une réinstallation. Comme un utilisateur la souligné ici, cela est fait dans Debian par dpkg --configure -a.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *