J'ai installé des paquets rpm sur mon Fedora 17. Certains paquets avaient beaucoup de dépendances. J'ai supprimé des paquets mais j'ai oublié de supprimer les dépendances inutilisées avec yum remove.
Comment puis-je faire cela maintenant?
J'ai installé des paquets rpm sur mon Fedora 17. Certains paquets avaient beaucoup de dépendances. J'ai supprimé des paquets mais j'ai oublié de supprimer les dépendances inutilisées avec yum remove.
Comment puis-je faire cela maintenant?
Réponses:
Ce n'est pas facile. Comment faites-vous la distinction entre "un fichier requis par quelque chose que j'ai supprimé depuis" de "un fichier qui n'est plus requis par quelque chose que je veux vraiment"?
Vous pouvez utiliser la package-cleanup
commande du yum-utils
package pour répertorier les "nœuds terminaux" dans votre graphe de dépendance. Ce sont des paquets qui peuvent être supprimés sans rien affecter 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 paquets en toute sécurité. Si vous ajoutez --all
à la ligne de commande:
$ package-cleanup --leaves --all
Vous obtiendrez également des paquets qui ne sont pas considérés comme des bibliothèques, mais cette liste sera si longue qu'elle ne sera probablement pas utile.
Si vous installez un paquet avec yum install
, disons pdftk
, il attirera beaucoup de 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
enlèvera seulement ce paquet 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 ensuite, 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!
yum history
. Merci!
A 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 paquet installé. autoremove
est très souvent un alias, remove --setopt=clean_requirements_on_remove=1
mais pour certaines raisons, il n’est toujours pas documenté.
yum remove --setopt=clean_requirements_on_remove=1
fonctionne pour moi en centOS
package-cleanup --leaves && yum autoremove
libvorbis supprimé et a ainsi fait disparaître l'application "Ices" de diffusion en continu sur Internet - probablement parce qu'elle n'était pas en pension et que je devais la compiler.
yum autoremove
fonctionne également sur CentOS 7.6.
J'ai pris des larsks répondre un pas plus loin.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Cela saisit toutes les dépendances qui peuvent être supprimées sans affecter quoi que ce soit d'autre, puis les supprime. Mieux vaut alors passer un par un.
"-q" est utile sur certains systèmes qui affichent "Configuration de yum" sinon, cette commande supprime yum. Et ce n'est pas ce que tu veux.
package-cleanup
sorties "Configuration de yum" sur ma machine, ce qui a amené Yum à se retirer lui-même. J'essaie maintenant de trouver un moyen de résoudre ce problème.
-q
option pour le nettoyage du paquet. Cela m'est aussi arrivé: D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
ignore silencieusement xargs si la sortie de nettoyage du paquet est vide, utile pour les scripts automatisés tels que ansible, chef, marionnette, vagabond
Dans les nouvelles Fedoras avec dnf
, vous pouvez utiliser dnf repoquery --unneeded
en remplacement de package-cleanup --leaves
.
yum
page de manuel : linux.die.net/man/8/yum ?