Comment lister les paquets dépendants (dépendances inverses)?

201

Afin de rechercher la cause de l'installation d'un package donné, j'aimerais obtenir une liste des packages qui dépendent de ce package. Je n'ai rien trouvé d'évident dans man dpkg.

l0b0
la source
5
Les réponses aux questions plus anciennes tournent toutes autour aptitude, quelque chose qui n'a pas été installé par défaut depuis des années. En 2017, tout le monde sur Ubuntu a toujours apt-cache. Toute personne qui suit la question liée va se perdre dans une discussion sur un programme que peu auront.
Lambart

Réponses:

252

apt-cache rdepends packagename devrait faire ce que tu veux

RobotHumans
la source
1
Excellent! apt-cache rdepends tofrodosconfirmé la suspicion qu'il a été installé par un autre paquet (le obsoleted dos2unix).
l0b0
2
Pour ce qui est d’aujourd’hui (apt version 0.9.9.1), il existe une option --recurse qui fonctionne avec rdepends.
Jarno
43
Si vous ajoutez --installed, le résultat est même utile pour les paquets pouvant être utilisés par beaucoup d'autres:apt-cache rdepends --installed packagename
quazgar
2
Il y a une syntaxe légèrement différente qui m'a permis de faire la différence entre les recommande, depends, suggests, etc. La syntaxe est sudo apt rdepends packagename(Notez qu'il est de ne pas utiliser apt-cache , mais simplement apt)
Vahid Pazirandeh
4
Pour la sortie, pourquoi certains paquets ont-ils une barre verticale (symbole du tuyau) devant eux?
Vahid Pazirandeh
62

aptitude a un moyen assez agréable de gérer ceci:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

Par défaut, il ne répertorie que la raison "la plus installée, la plus forte, la plus étroite, la plus courte", mais vous pouvez l'utiliser aptitude -v whypour afficher tout ce qu'il trouve.

tordue
la source
4
On dirait qu'il ne considère que les packages installés, pas tout ce qui est disponible. Et c'était ce dont j'avais besoin.
Tuukka Mustonen
3
Pour que vous voulez reverse-dependsdansubuntu-dev-tools
Tumbleweed
Que diriez-vous de Debian?
Tuukka Mustonen
1
ubuntu-dev-toolsest dans Debian
tumbleweed le
C'est bien. J'ai appris que openssh-server recommandé (et donc installé) xauthsur un serveur sans tête, en faisant glisser des centaines de dépendances x11 et des dizaines de mises à jour inutiles par mois. C'est le problème de la gestion automatisée des paquets!
BaseZen
18
apt-cache showpkg <pkgname> 

Exemple:

apt-cache showpkg lightdm
demain
la source
syntaxe actuelleapt showpkg <pkgname>
l --marc l
16

Il existe plus d'une façon, chaque méthode affichant une sortie différente.

Pour une vue détaillée de l'arbre de dépendance inverse complet;

aptitude install apt-rdepends
apt-rdepends -r bash

Alternativement

apt-cache showpkg bash

Ou une liste concise:

apt-cache rdepends bash
papashou
la source
Que montre exactement rdependsdans cet arbre? apt-rdepends php7.0-fpmmontre sed. sedne dépend pas de PHP, encore moins de PHP FPM.
Dan Dascalescu
C'est l'inverse qui dépend, cela signifie que PHP dépend de sed.
Erik Berkun-Drevnig
1
Salut les gars, en fait "apt-rdepends" signifie "dépendance récursive". Si vous voulez une dépendance récursive inversée, vous devez taper:apt-rdepends -r yourPackageNameHere
SebMa
La page de manuel d’apt-cache indique "rdepends affiche une liste de chaque dépendance inverse d’un paquet". Alors que apt-rdepends nécessite l’option -r pour inverser les dépendances, comme le dit @SebMa.
NeilG
8

L'option la plus simple est toujours:

apt rdepends package-name

ce qui ne vous oblige à installer aucun paquet.

Corrado Topi
la source
1
Qu'est-ce que cela ajoute à la réponse acceptée?
l0b0
2
La réponse acceptée n'a rien à voir avec celui-ci. Le résultat est complètement différent et bien plus utile pour la consommation humaine que pour apt-cache. La réponse mentionne qu'apt-cache n'est pas installé par défaut partout - cela seul devrait plutôt être un bon indice pour expliquer le but de cette réponse. enfin, c’est en fait la réponse que je cherchais, alors tout vote négatif est plutôt stupide.
Stefanct
Une des raisons très importantes pour lesquelles cela est meilleur que la version acceptée est qu’elle inclut la version des dépendances, contrairement à la apt-cachesortie. C’est exactement ce dont j’avais besoin pour le moment (déboguer une incompatibilité glibc 2.28, donc un vote positif)
Per Lundberg le
Upvote pour utiliser juste apt. au moment de la réponse initiale, je ne suis pas sûr que cette solution serait tout à fait valable, mais si c'est le cas maintenant, tant mieux.
RobotHumans le
7

En plus d’autres bonnes réponses, un APT / APT-GET -seffectue une suppression (ou une installation) "simulée".

sudo apt -s remove <pkgname>

Utiliser -sou --simulatedpour supprimer (ou installer) des paquetages listera normalement toutes les dépendances affectées. Il montrera les paquets orphelins lors de la suppression, ou les dépendances nécessaires lors de l'installation sans exécuter réellement le installou remove. Informatif seulement.

bshea
la source
apt remove -s php7.0-fpmmontre The following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0. Pourquoi Apache s’installe-t-il si je supprime PHP FPM?
Dan Dascalescu
@DanDascalescu Hmm. Cela pourrait être un mauvais script d’installation / suppression pour apt pkg ou d’autres dépendances qui installent apache2 en tant que dep (ce qui signifie qu’un serveur Web est nécessaire - et je crois que apache2 est le serveur Web par défaut). Pourrait être quelques choses. Juste pas sûr. A l'odeur d'un bon post sur AskUbuntu si vous n'avez pas trouvé de réponse.
bshea