web-dev-qa-db-fra.com

Est-il possible d'annuler une commande apt-get install?

J'ai installé Carpadio sur mon installation Xubuntu (un Live USB), qui a ensuite extrait plus de 50 paquets, je suppose, du côté Ubuntu du référentiel. Maintenant, je voudrais annuler cela. Cependant, pour toutes mes recherches, je ne trouve rien de plus utile que Comment inverser la commande sudo apt get install , qui suggère simplement apt-get purge. Ce n'est pas utile car tout ce qu'il fait est de supprimer 2 paquets (carpadio et carpadio-gnomepanel).

/var/log/apt/history.log a la liste de tous les packages qui ont été installés avec cette commande. Je me demandais donc s'il existait un moyen facile de les supprimer tous ? Sinon, je peux simplement réinstaller, c’était une nouvelle installation de toute façon, mais je suis curieux.

Un petit échantillon de l'historique (1/5-1/10 de la liste complète)

Ligne de commande: apt-get install cardapio-gnomepanel
Installation: libdbusmenu-qt2: AMD64 (0.9.2-0ubuntu1, automatique), python-packagekit: AMD64 (0.7.2-4ubuntu3, automatique), cups-pk-helper: AMD64 (0.2.1.2-1ubuntu0) .1, automatique), géoclue: AMD64 (0.12.0-1ubuntu12, automatique), unité: AMD64 (5.18.0-0ubuntu1, automatique), imprimantes-indicateurs: AMD64 (0.1.6-0ubuntu1, automatique), libolution: AMD64 (3.2.3-0ubuntu6, automatique), libqt4-déclarative: AMD64 (4.8.1-0ubuntu4.3, automatique), libmtp9: AMD64 (1.1.3-1ubuntu0.1, automatique), tracker-miner-fs: AMD64 ( 0.14.0-2ubuntu1, automatique), gir1.2-rb-3.0: AMD64 (2.96-0ubuntu4.2, automatique), python-aptdaemon.pkcompat: AMD64 (0,43 + bzr805-0ubuntu7, automatique), gnome-media: AMD64 (3.4.0-0ubuntu3.1, automatique), métacité: AMD64 (2.34.1-1ubuntu11, automatique), nautilus: AMD64 (3.4.2-0ubuntu6, automatique), libcompizconfig0: AMD64 (0.9.7.0 ~ bzr428-0ubuntu6, automatic), compiz-plugins-default: AMD64 (0.9.7.12-0ubuntu1, automatique), libunistring0: AMD64 (0.9.3-5, automatique), libebackend-1.2-1: AMD64 (3.2.3-0ubuntu7, automatique), Ubuntu-do cs: AMD64 (12.04.6, automatique), python-mako: AMD64 (0.5.0-1, automatique),

À tous ceux qui ont suggéré autoremove: Je ne sais pas pourquoi, mais je n’ai reçu qu’un autre paquetage lié à python (python-keybinder ou autre) comme "inutile" et c’est tout ce qu’autoremove a pu supprimer. .

Entre l'installation et la désinstallation, seul le changement majeur a été installé xubuntu-restricted-extras.

66
Karthik T

Fondamentalement, vous devrez à apt-get remove (ou à apt-get purger) le paquet et exécuter apt-get autoremove après cela, pour qu’il annule l’installation de package-one .

Regardons l'ensemble du processus:

  • Sudo apt-get install package-one installe 50 dépendances avec le symbole "automatique", comme le montre l'extrait de journal de votre question

  • Sudo apt-get purge package-one supprime (purge) un seul, mais ne lance ceci!

    Toutes les actions d'installation suivantes (si vous en exécutez une) donneront un message d'information avec les packages qui ne sont plus nécessaires:

    The following packages were automatically installed and are no longer required:
      package-two package-three [...]
    Use 'apt-get autoremove' to remove them.
    

    Cette liste est fondamentalement juste une liste de tous les paquets marqués comme "automatiques" sans dépendance inverse sur eux. En d'autres termes, il n'y a aucune raison pour qu'ils soient installés en ce qui concerne la gestion des paquets.

    Remarque: Aucune installation n'est requise! C'est juste pour démontrer que APT est bien avisé de vous parler de vos paquets inutiles!

  • Sudo apt-get autoremove --purge supprime (purge) ces

Plus d'information

78
gertvdijk

Lorsque vous souhaitez supprimer un package et ses dépendances installés à ce moment-là, vous devez utiliser:

Sudo apt-get purge package
Sudo apt-get --purge autoremove

mais pour annuler les actions apt, vous pouvez utiliser le script apt-undo. C'est un script simple qui peut annuler les actions apt effectuées dans Ubuntu. Il est à noter que ce script ne peut fonctionner que si vous l'utilisez à la place de apt-get pour installer/mettre à niveau/supprimer/purger/rétrograder vos packages.

Pour installer apt-undo dans Ubuntu, exécutez les commandes suivantes dans le terminal:

Sudo add-apt-repository ppa:lkjoel/apt-undo
Sudo apt-get update
Sudo apt-get install apt-undo

usage:

apt-undo install yourpackages
apt-undo remove yourpackages
apt-undo purge yourpackages
apt-undo upgrade
apt-undo dist-upgrade
apt-undo install yourpackages=old.version
apt-undo install yourpackages=new.version

Pour annuler, les actions aptitude ci-dessus exécutent les commandes suivantes dans le terminal:

apt-undo undo
19
Ramin

Utilisez le pouvoir d'Unix. Prenez la ligne de fichier journal que vous avez et construisez une commande qui annulera ce qu’apt a fait. Par exemple:

$ echo 'Install: libdbusmenu-qt2:AMD64 (0.9.2-0ubuntu1, automatic), python-packagekit:AMD64 (0.7.2-4ubuntu3, automatic), cups-pk-helper:AMD64 (0.2.1.2-1ubuntu0.1, automatic),'|Perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //'
libdbusmenu-qt2:AMD64 python-packagekit:AMD64 cups-pk-helper:AMD64

Vous pouvez donc utiliser cette option pour purger tous les packages que vous avez installés par inadvertance, à l'aide de la ligne appropriée de votre fichier journal:

$ dpkg -P $(echo '(full log line here)' | Perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //')

(J'ai utilisé Perl au lieu de sed parce que sed utilise un type d'expression régulière qui ne prend pas en charge les correspondances non-gourmandes, ce qui était le moyen le plus simple de construire ce dont j'avais besoin)

7
Robie Basak

Une fois que vous avez supprimé le package et que vous pouvez le supprimer en ajoutant --purge, for, apt-get remove --purge <package>, le système devrait vous indiquer que les packages de bibliothèque qu'il a extraits ont été installés automatiquement et ne sont plus nécessaires. Vous pouvez alors les exécuter. apt-get autoremove pour les supprimer.

1
Ken Kinder

Suivez le Sudo apt-get purge packagename avec

Sudo apt-get autoremove. 

À moins qu'il s'agisse d'un méta-paquet, cela devrait en prendre soin.

Voir également la FAQ à l'adresse Comment puis-je supprimer manuellement tous les fichiers Cardapio? .

1
chaskes
  1. Collez la longue liste de paquets indésirables du journal apt dans un new_file.txt
  2. Execute Perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt
  3. Copiez le résultat de la dernière commande dans le presse-papier ou transférez-le là en premier lie .
  4. Exécutez Sudo apt-get remove [collez le contenu du presse-papiers ici]

Terminé.

Fondamentalement, nous devons formater la liste des paquets du journal apt en quelque chose que apt-get peut comprendre. Les parenthèses, les mots entre les deux et les virgules doivent être utilisés pour que Perl puisse jouer. Oui, il existe de meilleures méthodes (plus efficaces) - mais j’ai fait cela, c’est facile à comprendre et ça marche.

1
Insperatus

Techniquement, les opérations "supprimer" ou "supprimer automatiquement" ne sont pas "annulées" bien qu'elles puissent être faites pour que le travail soit assez bon la plupart du temps.

Par défaut, apt-get laissera des paquets, à moins que vous ne spécifiiez -o APT::Suggests-Important=0 -o APT::Recommends-Important=0

Il est plus fiable de jeter un œil à apt history.log et de désinstaller tous les paquets installés. J'ai créé un petit script basé sur les nœuds pour faciliter le processus:

https://github.com/rolfen/apt-history

En outre, voici une autre approche plus manuelle pour "annuler" les modifications:

https://unix.stackexchange.com/a/236711

0
Rolf

Je sais que la question est assez ancienne, mais je suis venu ici pour chercher de l'aide et je peux peut-être aider quelqu'un. J'ai eu une situation similaire à celle de @ Karthik-T après l'installation de unity8-desktop-session-mir. Je sais que c'est un gros. Il a tiré 233 paquets avec lui.

En utilisant autoremove je n’ai retiré que 34 d’entre eux. Le fait est que lors de l'installation de unity8-desktop-session-mir, deux packages ont été supprimés (python3-aptdaemon.pkcompat et evolution-data-server-online-accounts). C'est indiqué dans /var/log/apt/history.log, après la section Install.

Pour annuler complètement l’installation de Unity 8, j’ai publié les informations suivantes:

  1. Sudo apt-get purge unity8-desktop-session-mir
  2. Sudo apt-get --purge autoremove
  3. Sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts (il a supprimé 8 paquets liés à Unity 8)
  4. Sudo apt-get --purge autoremove

Cela ne supprimera pas absolument tout ce que vous avez installé auparavant, mais dans certains cas, cela suffit.

PS: peut-être que autoremove à la deuxième étape n'est pas nécessaire, comme je l'ai émis à nouveau à la quatrième étape.

0
user536838

Si vous venez d'ajouter un ppa et que vous souhaitez revenir en arrière, vous devez suivre les étapes décrites ci-dessous. Comprenez que cela peut échouer lorsque vous avez installé d'autres packages que vous ne souhaitez pas désinstaller. Je suis sûr que cela peut être fait avec un script. Personnellement, je pense que cela devrait faire partie d’apt, et il devrait y avoir une meilleure administration des paquets installés en raison des dépendances et installés à la demande de l’utilisateur.

1) retirez le ppa de /etc/apt/sources.list Rappelez-vous le moment où vous avez ajouté le ppa. Si vous avez de la chance, vous n'avez pas besoin d'être précis.

2) Faites une liste des choses à réinstaller, à partir du moment où vous avez installé le PPA: cat /var/log/dpkg.log | grep 'upgrade'

3) Faites une liste des choses à supprimer, à partir du moment où vous avez installé le PPA: cat /var/log/dpkg.log | grep 'install'

4) supprimer tous les paquets de l'étape 3: Sudo apt-get remove {liste des paquets de l'étape 3}

5) réinstallez tous les paquets de l'étape 2: Sudo apt-get install --reinstall {liste des paquets de l'étape 2}

6) Si quelque chose ne va pas et que vous ne trouvez pas de solution, replacez le PPA et réinstallez tous les paquets des deux listes.

0
VincentSC