Désinstaller un paquet en toute sécurité dans Gentoo

12

Je voulais désinstaller un paquet spécifique dans Gentoo et j'ai parcouru la page de manuel emerge. J'ai trouvé l' --unmergeoption:

AVERTISSEMENT: cette action peut supprimer des packages importants! Supprime tous les packages correspondants. Cela ne vérifie pas les dépendances, il peut donc supprimer les packages nécessaires au bon fonctionnement de votre système. Ses arguments peuvent être des atomes ou des ebuilds. Pour une version sensible à la dépendance de --unmerge , utilisez --depclean ou --prune .

Cependant, j'aimerais qu'émerge pour vérifier si le package que je veux désinstaller est requis par tout autre package installé dans le système. --depcleanet --prunene fournissent pas cette fonctionnalité:

  • --depclean supprime les packages qui ont été installés en tant que dépendances, mais qui ne sont plus nécessaires
  • --prune "supprime tout sauf la version installée la plus élevée d'un package de votre système"

Yat - il pas de version vérification des dépendances de --unmerge?

daniel kullmann
la source

Réponses:

17

Je ne pense pas que cela depcleanfonctionne comme vous l'avez décrit. Sans aucun argument, c'est le cas, mais si vous lui passez un nom de package, cela fonctionne comme unmergeavec une vérification de dépendance supplémentaire. De emerge(1):

Depclean sert de version sensible aux dépendances de --unmerge. Lorsque donné un ou plusieurs atomes, il ne fusionnera pas les packages correspondants qui n'ont pas de dépendances inverses. À utiliser --depcleanavec --verbosepour afficher les dépendances inverses.

J'utilise toujours --depclean( -c) pour annuler la fusion de packages individuels; ça fonctionne bien

Michael Mrozek
la source
6

gentoolkit vient aider:

equery d <atom>

Vous pouvez d'abord vérifier les dépendances, puis procéder à la suppression du package après avoir inspecté ses dépendances.

Spidey
la source
5

Une autre façon d'obtenir le même résultat (bien que ce ne soit pas une commande qui ne se confond pas avec la vérification des dépendances):, emerge --deselect packagequi supprime le package du fichier mondial. Maintenant, l'exécution emerge --depcleansupprimera ce package s'il n'est requis par aucun autre package.

njsg
la source
Est-ce à dire que cela emerge --depcleansupprime tous les packages qui ont été installés à l'aide emerge --oneshot(sauf si ces packages sont nécessaires à un package du monde)?
daniel kullmann
@danielkullmann oui. il calcule tout le graphe des dépendances et supprime ce qui n'est tiré par aucun paquet au monde. Vous pouvez utiliser emerge --noreplace --selectpour ajouter des packages déjà installés sans les recompiler, btw.
njsg
1

Parfois, emerge --unmergedonne ce message d'avertissement:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Il semble que ce soit la méthode recommandée pour effectuer la vérification des dépendances avant de fusionner un package. J'espère néanmoins qu'il existe un meilleur moyen, plus automatisé, d'y parvenir.

daniel kullmann
la source