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

8

J'ai utilisé la sudo apt-get remove pythoncommande et j'ai accidentellement supprimé un tas de paquets nécessaires. Je me suis connecté via la ligne de commande et j'ai à nouveau installé ubuntu-desktop mais il y a d'autres packages qui manquent, et je cherche un moyen de réinstaller facilement ces packages supprimés. Puisqu'il y a le journal au centre logiciel, je voulais demander quelle serait la façon la plus simple d'annuler les modifications ou d'extraire la liste des paquets supprimés du centre logiciel ...

Remarque: J'ai tapé sudo apt-get install .... .... ... ...environ deux douzaines de ces programmes supprimés dans cette liste, mais lorsque j'ai appuyé sur Entrée, il n'a installé aucun d'entre eux car certains noms de package étaient introuvables.

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

Logan
la source
1
Regardez/var/log/apt/history.log
Lekensteyn

Réponses:

16

Tout d'abord, permettez-moi de dire que la suppression pythonpeut entraîner la suppression de nombreuses commandes fondamentales. Je ne sais donc pas si ce qui suit fonctionnera.

Deuxièmement, je suppose que l' package names couldn't be founderreur que vous avez 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 paquets supprimés, relativement au dernier dpkgjournal disponible (je ne pense pas que vous ayez besoin de prendre en compte les journaux plus anciens):

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

Modifiez ensuite le listfichier créé dans le répertoire en cours et ne laissez que des lignes relatives aux packages que vous souhaitez réinstaller, en fonction de l'horodatage de la ligne. Disons que vous enregistrez 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' --simulateoption pour voir ce que la commande ferait. Si tout va bien, recommencez la commande avec cette option supprimée.

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

enzotib
la source
merci, j'ai pu réinstaller les packages dont j'avais besoin! Une question cependant, il y a plus de 200 packages supprimés dans le journal du centre logiciel, mais le fichier de liste en contient environ 150, cela signifie-t-il que dpkg.log ne contient pas d'installations automatiques / packages dépendants? encore merci pour cette solution :)
Logan
1
Ce fichier journal contient tous installés, modernisés, enlevés ou paquet purgés, et avec toutes les applications de dpkgla apt-get, aptitude, Synaptic, Software Center, gdebietc. Vous pouvez donner un oeil aux anciens dpkg.logfichiers, voir ls -lrt /var/log/dpkg.log*.
enzotib
1
@enzotib J'ai exécuté un script pour purger les anciens en-têtes Linux, et je pense que l'expression régulière correspondait à de nombreux paquets que je ne voulais pas supprimer (très importants !!). Votre réponse m'a sauvé d'une certaine catastrophe.
shivisuper
1
@enzotib Vous venez de m'empêcher de réinstaller mon système d'exploitation après avoir exécuté un mauvais script. Merci!
brndn2k
il indique 0 mis à niveau, 0 installé, 0 à supprimer et 50 non mis à niveau
James Casia
2

Donc, il m'arrive de faire une erreur similaire: sudo apt-get purge python3.6*au lieu de sudo apt-get purge python3.6.*.

J'ai pu le réparer assez rapidement, avec les étapes suivantes:

  1. Ouvert le journal vim /var/log/history.log.
  2. J'ai recherché ma mauvaise commande à l'aide de 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 packages purgés (en cas de suppression, cela commencera par Remove:), que j'ai copié dans un autre fichier sans la Purge:partie pour travailler avec.
  4. Dans ce fichier, j'ai exécuté la commande vim:, %s/:[^,]*,//gqui a supprimé la partie 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 j'ai exécuté:, sudo apt-get install unity-control-center-signon lxc ...et c'est ainsi que cela a été corrigé.
Nikita
la source
pour moi c'était/var/log/apt/history.log
Taylor