web-dev-qa-db-fra.com

Supprimer les packages inutilisés

J'ai installé un paquet rpm sur mon Fedora 17. Certains paquets avaient beaucoup de dépendances. J'ai supprimé certains paquets mais j'ai oublié de supprimer les dépendances inutilisées avec yum remove.

Comment puis-je faire ça maintenant?

67
mudlee

Ce n'est pas facile. Comment différenciez-vous "un fichier qui a été requis par quelque chose que j'ai supprimé depuis" d'un "fichier qui n'est pas requis par autre chose que je veux vraiment"?

Vous pouvez utiliser le package-cleanup commande à partir de yum-utils package pour répertorier les "nœuds feuilles" dans votre graphique de dépendance de package. Ce sont des packages qui peuvent être supprimés sans affecter quoi que ce soit d'autre:

$ package-cleanup --leaves

Cela produira une liste de "bibliothèques" dont rien d'autre ne dépend. Dans la plupart des cas, vous pouvez supprimer ces packages en toute sécurité. Si vous ajoutez --all à la ligne de commande:

$ package-cleanup --leaves --all

Vous obtiendrez également des packages qui ne sont pas considérés comme des bibliothèques, mais cette liste sera si longue qu'elle ne sera probablement pas utile.

39
larsks

Si vous installez un package avec yum install, disons pdftk, cela entraînera de nombreuses dépendances:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  Java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  Java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk supprimera uniquement ce package et pas toutes les dépendances.

Mais vous pouvez regarder toutes les "transactions" (installer, supprimer, etc.):

$ Sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

Et puis vous pouvez annuler cette transaction:

$ Sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @Fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @Fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @Fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @Fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @Fedora
    Dep-Install Java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @Fedora
    Dep-Install Java_cup-1:0.11a-10.fc18.noarch       @Fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @Fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @Fedora
    Install     pdftk-1.44-10.fc18.x86_64             @Fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @Fedora
    ...
    Complete!
107
Your Mom

À partir de Fedora 18, vous pouvez simplement utiliser cette commande

yum autoremove

ou

yum remove --setopt=clean_requirements_on_remove=1

Vous pouvez également appliquer la commande autoremove avec un package spécifique

yum autoremove <package>

Ce qui supprimera les dépendances inutiles de ce package installé. autoremove est un alias de remove --setopt=clean_requirements_on_remove=1 mais pour certaines raisons, n'est toujours pas documenté.

67
Finalzone

J'ai pris des larsks répondre un peu plus loin.

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

Cela récupère toutes les dépendances qui peuvent être supprimées sans affecter quoi que ce soit d'autre, puis les supprime. Mieux vaut alors passer par un par un.

"-q" est utile sur certains systèmes qui affichent "Configuration de yum" dans le cas contraire, provoquant la suppression de yum par cette commande. Et ce n'est pas ce que tu veux.

9
jtoscarson

Dans les Fedoras plus récents avec dnf, vous pouvez utiliser dnf repoquery --unneeded en remplacement de package-cleanup --leaves.

2
Thomas Ahle