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.
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:
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.
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
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.
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.
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.