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

62

J'ai installé Carpadio sur mon installation Xubuntu (un Live USB), qui a ensuite tiré comme plus de 50 paquets du côté d'Ubuntu, je suppose. Maintenant, je voudrais annuler cela. Cependant, pour toute ma chasse, je ne trouve rien de plus utile que Comment puis-je 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 contient une liste de tous les packages installés avec cette commande. Je me demandais donc s'il y avait un moyen facile de les supprimer tous ? Sinon, je peux simplement réinstaller, c'était une toute nouvelle installation, mais je suis curieux.

Un petit exemple du journal d’historique (1 / 5-1 / 10 de la liste entière)

  

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) , geoclue: amd64 (0.12.0-1ubuntu12, automatique), unité: amd64 (5.18.0-0ubuntu1, automatique), indicateurs-imprimantes: amd64 (0.1.6-0ubuntu1, automatique), libevolution: amd64 (3.2.3- 0ubuntu6, automatique), libqt4-declarative: 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, automatique), 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, automatic), ubuntu-docs: amd64 (12.04.6, automatique), python-mako: amd64 (0.5.0-1, automatique),

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

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

    
posée Karthik T 25.01.2013 - 18:03
la source

9 réponses

71

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

Regardons tout le processus:

  • sudo apt-get install package-one installe 50 dépendances marquées "automatique" comme on peut le voir dans l'extrait de journal de votre question

  • sudo apt-get purge package-one supprime (purge) un seul, mais ne exécute ce programme!

    Toutes les actions d’installation suivantes (si vous en exécutez) produiront un message d’information avec les paquets inutiles:

    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 simplement une liste de tous les paquets marqués comme "automatiques" sans dépendance inverse. En d'autres termes, il n'y a aucune raison de les installer en ce qui concerne la gestion des paquets.

    Remarque: Aucune installation n'est nécessaire! C'est juste pour démontrer qu'APT est intelligent pour vous parler de vos paquets inutiles!

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

Plus d'informations

réponse donnée gertvdijk 25.01.2013 - 18:13
la source
18

Lorsque vous souhaitez supprimer un paquet et ses dépendances installées alors, vous devez utiliser:

sudo apt-get purge package
sudo apt-get --purge autoremove

mais pour annuler les actions de 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 paquets.

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

utilisation:

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 s'exécutent à la suite des commandes du terminal:

apt-undo undo
    
réponse donnée Ramin 25.01.2013 - 18:15
la source
7

Utilisez le pouvoir d'Unix. Prenez la ligne du fichier journal que vous avez et construisez une commande qui annulera ce que fit apt. 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 purge pour tous les paquets que vous avez installés accidentellement, à partir 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 car 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)

    
réponse donnée Robie Basak 25.01.2013 - 18:46
la source
1

Après avoir supprimé le paquet, et que vous pouvez le supprimer en ajoutant --purge, for, apt-get remove --purge <package> , vous devriez recevoir un message vous informant que les paquets de la bibliothèque ont été installés automatiquement et ne sont plus nécessaires, à quel point vous pouvez exécuter apt-get autoremove pour les supprimer.

    
réponse donnée Ken Kinder 25.01.2013 - 18:12
la source
1

Suivez le sudo apt-get purge packagename avec

sudo apt-get autoremove. 

À moins que ce soit en méta-paquet, cela devrait en prendre soin.

Consultez également la FAQ à l'adresse Comment supprimer manuellement tous les fichiers tous Cardapio? .

    
réponse donnée chaskes 25.01.2013 - 18:13
la source
1
  1. Collez la longue liste des paquets indésirables depuis le journal apt dans un new_file.txt
  2. Exécuter perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt
  3. Copiez la sortie de la dernière commande dans le presse-papiers ou placez-le en premier lieu .
  4. Exécutez sudo apt-get remove [collez le contenu du presse-papiers ici]

Fait.

Fondamentalement, nous devons formater la liste des paquets à partir du journal apt dans quelque chose que apt-get peut comprendre. La parenthèse, les mots entre les deux et les virgules doivent être placés de telle sorte que le perl entre en jeu. Oui, il y a de meilleures façons (plus efficaces) - mais je l'ai fait, c'est facile à comprendre et ça marche.

    
réponse donnée Insperatus 02.02.2013 - 10:59
la source
0

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 qui sont installés à cause des dépendances et qui sont installés à la demande de l'utilisateur.

1) supprimer le ppa de /etc/apt/sources.list Rappelez-vous l'heure à laquelle vous avez ajouté le ppa. Si vous avez de la chance, vous n'avez pas besoin d'être précis.

2) faire une liste de ce qu'il faut réinstaller, à partir du moment où vous avez installé le PPA: cat /var/log/dpkg.log | grep 'upgrade'

3) faire une liste des éléments à 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 à l’étape 2: sudo apt-get install --reinstall {liste des paquets de l'étape 2}

6) Si les choses ont mal tourné et que vous ne pouvez pas penser à une solution, remettez le PPA en place et réinstallez tous les packages des deux listes.

    
réponse donnée VincentSC 20.08.2013 - 18:24
la source
0

Je sais que c'est une question assez ancienne mais je suis venu ici chercher de l'aide et peut-être que je peux 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’en retire que 34. Le point est que lors de l'installation de unity8-desktop-session-mir , il a supprimé deux packages ( python3-aptdaemon.pkcompat et evolution-data-server-online-accounts ). Il est indiqué dans /var/log/apt/history.log , après la section Install .

Pour annuler complètement l'installation d'Unity 8, j'ai publié les éléments suivants:

  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 absolument pas tout ce que vous avez installé auparavant, mais dans certains cas, cela suffit.

PS: le autoremove à la deuxième étape n’est peut-être pas nécessaire, car je l’ai réémis à la quatrième étape.

    
réponse donnée user536838 03.08.2016 - 12:47
la source
0

Techniquement, les opérations de "suppression" ou de "suppression automatique" ne sont pas "annulées" bien qu’elles puissent faire le travail suffisamment bien 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 regarder apt history.log et de désinstaller tous les paquetages installés. J'ai créé un petit script basé sur un nœud pour faciliter le processus:

lien

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

lien

    
réponse donnée Rolf 12.05.2018 - 12:22
la source

Lire d'autres questions sur les étiquettes