Comment supprimer les packages orphelins dans Fedora?

42

Je viens de passer d'Ubuntu à Fedora14. Dans Ubuntu, nous avions la apt-get autoremovepossibilité de supprimer les paquets orphelins / inutilisés. Quelle est la contrepartie dans Fedora?

c0da
la source

Réponses:

36

package-cleanup --quiet --leavesdu paquet yum-utils listera les paquets de la bibliothèque qui ne sont pas utilisés par les autres paquets. Malheureusement, cela a tendance à être un peu excessif. Sur mon système, par exemple, il a suggéré de supprimer libvirt. Ajouter l' --exclude-binargument aide. Si cette suggestion vous convient, alors pour nettoyer les paquets, faites:

# package-cleanup --quiet --leaves --exclude-bin | xargs yum remove -y

la source
1
Testé après l’installation, la suppression netbeans-platformet le nettoyage de paquet, répertorie certaines choses, mais aucune des netbeans-platformdépendances précédemment installées (avec Fedora 17).
maxschlepzig
2
Cela ne fonctionne pas, comme l'a souligné @maxschlepzig
c0da le
30

DNF, le remplacement de yum depuis Fedora 22, fournit également une autoremovesous - commande qui est modélisée d'après apt-get / yum autoremove.

Exemples:

# dnf autoremove

qui essaie de supprimer tous les paquets de dépendance installés automatiquement et inutilisés - devrait être à peu près équivalent à apt-get autoremove.

# dnf autoremove examplepackage

qui supprime examplepackage et toutes ses dépendances automatiquement installées (et sinon inutilisées).

Miam

Yum a la commande autoremove depuis Fedora 19 et est documentée depuis Fedora 20 / RHEL 7.

L'utilisation est analogue à l'implémentation de dnf, par exemple:

# yum autoremove

ou

# yum autoremove examplepackage

Changer le comportement de yum supprime

Yum prend en charge une option de configuration permettant de modifier le comportement par défaut de la removesous - commande (par exemple via /etc/yum.conf):

clean_requirements_on_remove=yes

yum.conf (5)

Lorsque cette option est définie, la suivante yum removetente également de supprimer les dépendances automatiquement installées si elles ne sont pas nécessaires aux autres packages.

Vous pouvez également tester temporairement cette option via quelque chose comme:

# yum --setopt=clean_requirements_on_remove=1 remove examplepackage

Solution de contournement pour l'ancienne version de Fedora

(Pour les versions de Fedora où la sous-commande yum autoremove n'est pas disponible et / ou clean_requirements_on_removene fonctionne pas.)

Bien que pendant l'installation des paquets installés, les dépendances soient marquées comme telles (semble être une fonctionnalité relativement nouvelle de rpm / yum).

Vous pouvez trouver des dépendances inutiles via:

$ package-cleanup --leaves -q --all \
    | xargs repoquery --installed --qf '%{nvra} - %{yumdb_info.reason}' \
    | grep -- '- dep' \
    | cut -d' ' -f1 > tmp

Cette ligne de commande est inspirée du script de fenris02 .

Après inspection de tmp(et peut-être curation), vous pouvez les supprimer via quelque chose comme ceci:

# xargs yum remove < tmp
maxschlepzig
la source
L'erreur "Requête de type yumdb non valide" pour l'installation de pkg: adobe-release-x86_64-1.0-1.noarch "a été renvoyée. Qu'est-ce que c'est maintenant?
c0da
@ c0da, je suppose que la fonctionnalité que yum enregistre dans sa base de données la "raison" de l'installation (par exemple, "dep" ou "utilisateur") pour chaque paquet est relativement nouvelle. Peut-être que votre instance Fedora est antérieure à l’introduction de cette fonctionnalité, de sorte que vous avez encore quelques (vieux) paquets installés sans cet ensemble de balises.
maxschlepzig
J'ai installé Fedora 18 il y a quelques jours. Donc, je pense que l'étiquette requise devrait être là.
c0da
1
@ c0da, peut-être que la "raison" n'a pas été enregistrée car vous avez installé le paquet adobe-releaseviayum localinstall
maxschlepzig le
16

vous devez installer le plugin yum "remove-with-leaves":

# yum install yum-plugin-remove-with-leaves.noarch

une fois installé:

# yum remove --remove-leaves package

bonne chance!

mrc
la source
3
et comment l'exécuter pour toutes les applications installées?
cnd
Ne semble pas être très fiable aussi: skvidal.wordpress.com/2010/11/09/orphaned-dep-cleanup-in-yum
maxschlepzig
1
RHEL / CentOS / Oracle Linux 6 nécessite l' yum-plugin-remove-with-leaves.noarchinstallation du package pour pouvoir être utilisépackage-cleanup
Terry Wang le
8
# package-cleanup --orphans >/tmp/junk

Editez le /tmp/junkfichier et supprimez la première ligne informative de la ligne de commande, entrez les informations suivantes:

for file in `cat /tmp/junk`
do
  yum remove $file
done
Larry Mohr
la source
1
package-cleanup (1) dit: '--orphans Liste les paquets installés qui ne sont pas disponibles à partir des référentiels actuellement configurés.' Ce n'est pas équivalent à ce que apt-get autoremovefait. apt-get (8) dit: 'autoremove est utilisé pour supprimer les paquets qui ont été installés automatiquement pour satisfaire les dépendances de certains paquets et qui ne sont plus nécessaires.'
maxschlepzig
1
Ça ne marche pas! J'ai dû me tromper auparavant. Merci @maxschlepzig
c0da
Cela fonctionnait pour moi auparavant, mais dans CentOS 6.6, il répertorie tous les packages installés, pas seulement les orphelins.
Gaia
4

REMARQUE: cette réponse est correcte mais ne concerne que RHEL 7+ et Fedora 20+ (où la suppression automatique a été ajoutée en tant que nouvelle fonctionnalité).

# yum autoremove

Il suffit de confirmer pour supprimer les packages sélectionnés.

Chilly Milly
la source
0

S'appuyant sur la réponse de Larry Mohr :

package-cleanup --orphans | sed '1d' | sed '/^ * /d' | sed '/Loading mirror speeds from cached hostfile/d' | xargs sudo yum remove

(Comprend le saut pour le miroir le plus rapide, si vous vous le demandez.)

Bengt
la source
0

Dans Fedora, le paquet orphelin ne signifie aucun dépôt de candidats à mettre à jour!

  1. Si les packages orphelins ont été générés par vous, désactivez yum.repos.d / some.conf.

    yum distro-sync
    
  2. Autres paquets orphelins, la commande peut être dangereuse.

    yum remove $(package-cleanup --orphans)
    

    ou, utilisez simplement la commande de sécurité.

    yum remove name-of-page
    
firo
la source