web-dev-qa-db-fra.com

Comment réinstaller plusieurs paquets supprimés à la fois?

J'ai utilisé la commande Sudo apt-get remove python et j'ai accidentellement retiré un paquet de paquets nécessaires. Je me suis connecté via la ligne de commande et j'ai installé ubuntu-desktop à nouveau, mais il manque d'autres paquets, et je cherche un moyen de réinstaller facilement les paquets supprimés. Comme il existe un journal au centre logiciel, je voulais demander quel serait le moyen le plus simple d’annuler les modifications ou d’extraire la liste des paquets supprimés à partir du centre logiciel ...

remarque: j'ai tapé Sudo apt-get install .... .... ... ... pour environ deux douzaines de programmes supprimés dans cette liste, mais lorsque j'ai appuyé sur Entrée, aucun de ces programmes n'a été installé car certains noms de paquetages étaient introuvables.

Les programmes ont été supprimés à la même date.

8
Logan

Tout d’abord, laissez-moi vous dire que supprimer python peut conduire à de nombreuses commandes fondamentales qui ne fonctionnent plus. Donc, je ne sais pas si ce qui suit va marcher.

Deuxièmement, je suppose que votre erreur package names couldn't be found provient d'un nom mal orthographié sur la ligne de commande ou d'un package installé localement et non disponible dans les référentiels.

Ensuite, pour obtenir un journal des packages supprimés, par rapport au dernier journal dpkg disponible (je ne pense pas que vous deviez prendre en compte les anciens journaux):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Editez ensuite le fichier list créé dans le répertoire en cours et ne laissez que les lignes relatives aux packages que vous souhaitez réinstaller, en fonction de l'horodatage de la ligne. Supposons que vous sauvegardiez le fichier modifié dans list-mod.

Pour réinstaller ces packages, utilisez la commande suivante:

Sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

J'ai inséré l'option --simulate pour voir ce que la commande ferait. Si tout est ok, relancez la commande avec cette option supprimée.

Si la commande indique que certains packages sont introuvables, supprimez-les simplement de list-mod et réessayez.

16
enzotib

Donc, je fais une erreur similaire: Sudo apt-get purge python3.6* au lieu de Sudo apt-get purge python3.6.*.

J'ai pu résoudre le problème assez rapidement en procédant comme suit:

  1. Ouvre le journal vim /var/log/history.log.
  2. J'ai cherché ma mauvaise commande en utilisant la commande vim /python3.6\*.
  3. Il y avait une ligne Purge: unity-control-center-signon:AMD64 (0.1.7~+14.04.20140211.2-0ubuntu4), ... avec une longue liste de paquets purgés (en cas de suppression, elle commencera par Remove:), que j'ai copiée dans un autre fichier sans la partie Purge: pour l'utiliser. .
  4. Dans ce fichier, j'ai exécuté la commande vim: %s/:[^,]*,//g, qui a supprimé la partie de version et m'a laissé une liste de packages unity-control-center-signon lxc ....
  5. Enfin, j'ai copié une ligne de l'étape précédente et exécuté: Sudo apt-get install unity-control-center-signon lxc ..., et c'est ainsi que cela a été corrigé.
1
Nikita