Puis-je voir pourquoi un paquet est installé?

95

Pour un package spécifique, puis-je savoir pourquoi il est installé?

Alors, puis-je voir ou installer manuellement, ou s’il est installé en tant que dépendance d’un autre package? Ou qu'il soit installé dans le cadre de la distribution?

    
posée Peter Smit 10.10.2010 - 16:08
la source

4 réponses

91

Une solution rapide consiste à entrer la commande suivante dans un terminal:

aptitude why $package

ou, si vous êtes seulement intéressé par la cause ultime:

aptitude why $package --show-summary

Remplacez $ package par le nom du package, et vous devrez peut-être d'abord installer le package aptitude .

Voici le résultat que vous pourriez obtenir pour aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

Pour plus de détails, exécutez aptitude why aspell . Vous pouvez lire l'exemple ci-dessous comme suit: "Vous avez installé manuellement inkscape , qui requiert libgtkspell , ce qui nécessite libenchantic2a , ce qui nécessite aspell ". (Les marqueurs i indiquent les packages installés; les marqueurs A indiquent les packages installés automatiquement.)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

Enfin, la commande suivante

apt-cache rdepends --installed $package

répertorie les autres packages installés sur votre ordinateur qui dépendent directement de $ package . Vous pouvez ajouter l'option --recurse pour répertorier tous les packages qui en dépendent directement ou indirectement.

    
réponse donnée enzotib 10.10.2010 - 16:14
la source
29

Vous pouvez trouver un raisonnement rapide et court sur la raison pour laquelle un paquet a été installé en tapant la commande suivante dans un terminal ( Applications -> Accessories -> Terminal ):

aptitude why <package-name>

Remplacez-le par le nom du package qui vous intéresse. Par exemple, en tapant aptitude why libgoo-canvas-perl , vous obtenez le résultat suivant:

i   shutter Suggests libgoo-canvas-perl

Cela signifie essentiellement que le package shutter dans ce cas a suggéré que libgoo-canvas-perl soit installé. En tapant alors aptitude why shutter , je peux remonter la chaîne de dépendance.

Cependant, il y a une réserve. Je remarque souvent que aptitude trouve l'explication la plus plausible à la situation qui peut ne pas être le cas réel, mais vous donnera néanmoins un indice pour aller plus loin.

Dans mon cas, shutter suggère libgoo-canvas-perl - cependant, les paquetages suggérés ne sont pas automatiquement installés par défaut. Néanmoins, cela me permet de mémoriser "l'expérience" de ne pas pouvoir modifier les captures d'écran avec shutter , ce qui m'a amené à installer manuellement ligbgoo-canvas-perl

Enfin, vous pouvez savoir si un paquet a été installé automatiquement (ce qui signifie que le système de gestion des paquets a décidé d’examiner impérativement les dépendances et les recommandations des autres paquetages que vous lui avez demandés) en exécutant la commande suivante.

aptitude show <package-name>

Cela affichera une ligne comme ci-dessous (3ème ligne du résultat):

Automatically installed: no

Pour plus d'informations, exécutez info aptitude (dans un terminal) ou visitez la page wiki d'Aptitude

Pour découvrir quand un paquet particulier a été installé, il existe deux options:

  1. Le gestionnaire de paquets Synaptic conserve un journal d’historique de toutes les activités. Pour afficher le fichier d'historique, choisissez Historique dans le menu Fichier. Vous pouvez rechercher Install (attention à la casse) pour répertorier toutes les entrées concernant l'installation. Cependant, cela affichera uniquement les paquets installés à l'aide de Synaptic
  2. Exécutez la commande suivante dans un terminal. Cela recherchera les journaux de dpkg pour les entrées de l'historique d'installation. Cependant, il existe une limite maximale à la quantité de ces journaux conservés. Par conséquent, si le paquet que vous recherchez a été installé il y a longtemps, vous ne le trouverez peut-être pas. Plus de détails ici

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    
réponse donnée koushik 21.09.2010 - 16:02
la source
11

Oui, vous pouvez, et c'est une commande assez évidente, en fait. En supposant que vous ayez installé aptitude, vous pouvez ouvrir un type d'annonce de la fenêtre Terminal Server:

aptitude why package

Cela devrait donner une liste de paquets qui dépendent de ce paquet spécifique. Si c'est un paquet installé manuellement, il dira quelque chose comme "Il n'était pas possible de trouver une raison pour installer le paquet".

    
réponse donnée Daniel Rodrigues 10.10.2010 - 16:14
la source
2

Voici un moyen simple qui ne repose pas sur aptitude , qui n'est plus livré par défaut à 10.10.

  

Remarque

     

Vous devez avoir un accès root pour exécuter ces commandes.

Graphiquement

Ouvrez Synaptic et essayez de le supprimer.

Si une boîte de dialogue apparaît vous demandant de supprimer d'autres packages, ce sont les packages qui en dépendent (récursivement).

du terminal

apt-get remove package_name_goes_here -s

Encore une fois, les paquets qui seraient supprimés en conséquence sont tous ceux qui (récursivement) en dépendent. (Le paramètre -s indique à apt-get de ne pas supprimer réellement le package.)

    
réponse donnée badp 10.10.2010 - 16:27
la source

Lire d'autres questions sur les étiquettes