Cette question est similaire à Comment puis-je savoir pourquoi un package a été installé? , mais dans mon cas, j'aimerais savoir avant d' installer réellement un package, pourquoi il va installer une dépendance particulière.
Ainsi, par exemple, je pourrais courir
sudo apt-get install superfoo
et la sortie dira quelque chose comme:
The following extra packages will be installed:
foo bar baz ... libderp libjunk
Et cela pourrait être une liste vraiment énorme. Dans certains cas, je vais voir quelque chose qui va être installé qui n'a pas vraiment de sens pour moi étant donné ce que j'installe, donc je veux savoir pourquoi cette dépendance particulière va être installée.
Dans l'exemple ci-dessus, disons que j'aimerais comprendre pourquoi libderp
serait installé. Je sais qu'il existe en quelque sorte une chaîne de dépendances entre superfoo
et, libderp
mais l'énorme liste de packages à installer rend difficile de voir ce qu'est cette chaîne.
Une fois que je connais la chaîne de dépendance, je peux décider si je veux vraiment installer le package d'origine ou non, et / ou si je dois contacter le responsable de ce package pour voir s'il a vraiment besoin d'avoir ces dépendances là-bas.
la source
Réponses:
Ce que vous semblez vraiment demander, c'est "Comment puis-je représenter les dépendances?" afin que vous puissiez voir quels packages tirent dans quelles dépendances.
Vous obtenez à la fois le texte et les dépendances schématiques de la
apt-cache
commande (incluse dans le package apt, qui fait partie de l'installation par défaut).Voici un exemple d'apt-cache pour lister les dépendances du paquet 'hello' au format texte. La sortie de texte sera toujours d'un seul niveau.
Vous pouvez lire le diagramme à l'aide de n'importe quel visualiseur de fichiers dot, tel que
dotty
(inclus dans le package graphviz, également inclus dans l'installation par défaut)Voici un exemple pour obtenir l'arborescence de dépendances complète au format graphique, puis l'afficher. La sortie graphique sera toujours l'arborescence complète.
En y jetant un coup d'œil, vous pouvez voir que le paquet 'hello' attire une tonne de paquets Perl ... et quelle dépendance le fait.
la source
apt-cache depends --recurse
vous donnera l'image complète, mais apt-rdepends ci-dessous est meilleur car il ne suit que les dépendances réelles, non recommandées ou suggérées.--no-install-recommends
indicateur.|
apt-rdepends
fait cela, sans installer plus de 50 bibliothèques de cruft commeubuntu-dev-tools
.Sur mon installation propre du serveur Ubuntu,
apt-rdepends
requis uniquementlibapt-pkg-perl
pour l'installation. Il est alors beaucoup plus légerubuntu-dev-tools
et pourtant récursif, vous obtenez donc toutes les dépendances, plutôt que les dépendances de premier ordre, comme lesapt-cache depends
retours.la source
Il peut y avoir un moyen plus simple de le faire, mais cela peut être fait si vous utilisez le reverse-depend. Vous devrez installer le paquet ubuntu-dev-tools en faisant
apt-get install ubuntu-dev-tools
Ou en cliquant sur ce bouton:
Une fois installé, vous pouvez ensuite utiliser reverse-depend pour voir ce qui dépend d'un package spécifique. Par exemple, si vous essayez d'installer quelque chose qui veut installer un tas de paquets supplémentaires et que vous voulez voir pourquoi "libsmpeg0" est installé, vous exécutez
Ce qui produirait ce qui suit.
Jetez un œil et voyez si le package que vous souhaitez installer figure dans cette liste. Si ce n'est pas le cas, un autre des packages extraits lors de cette installation initiale s'affichera dans cette liste et vous devrez exécuter la procédure inverse en fonction de ce package. Finalement, vous verrez le package initial que vous souhaitez installer dans cette liste. À ce stade, vous devriez avoir une chaîne indiquant exactement pourquoi ce package a été installé.
En tant que note supplémentaire, je pense que la recommandation est activée par défaut, donc si quelque chose est défini comme une recommandation, il sera récupéré. Suggère si elle est désactivée, mais la fonction inverse peut également afficher ces informations.
la source
ubuntu-dev-tools
entraîne l'installation des packages suivants.bzr bzr-builddeb dctrl-tools debian-archive-keyring debian-keyring debootstrap devscripts diffstat distro-info distro-info-data dput genisoimage gettext hardening-includes intltool-debian libapt-pkg-perl libarchive-zip-perl libasprintf-dev libassuan0 libauthen-sasl-perl libautodie-perl libclone-perl libcommon-sense-perl libcroco3 libdigest-hmac-perl libdistro-info-perl libemail-valid-perl libencode-locale-perl liberror-perl
python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth python-paramiko python-reportbug python-secretstorage python-simplejson python-soappy python-support python-wadllib python3-debian python3-magic quilt reportbug t1utils unzip wdiff xdelta
(Remarque: ce qui précède n'était que les packages requissudo apt-get install ubuntu-dev-tools
sur une instance de serveur ubuntu assez propre). Si vous essayez d' éviter d' installer d'énormes quantités de cruches, c'est probablement la pire solution possible.