Wie liste ich abhängige Pakete auf (umgekehrte Abhängigkeiten)?

201

Um zu untersuchen, was die Installation eines bestimmten Pakets verursacht hat, möchte ich eine Liste der Pakete erhalten, die von diesem Paket abhängen. Ich konnte nichts Offensichtliches darin finden man dpkg.

l0b0
quelle
Siehe auch
Seth
5
Bei den Antworten der älteren Frage dreht sich alles um aptitudeetwas, das seit Jahren nicht mehr standardmäßig installiert wurde. Im Jahr 2017 hat noch jeder auf Ubuntu apt-cache. Wer der verknüpften Frage folgt, wird sich in einer Diskussion über ein Programm verlieren, das nur wenige haben.
Lambart

Antworten:

252

apt-cache rdepends packagename sollte tun, was du willst

RobotHumans
quelle
1
Ausgezeichnet! apt-cache rdepends tofrodosbestätigte den Verdacht, dass es von einem anderen Paket installiert wurde (das veraltete dos2unix).
l0b0
2
Ab heute (apt Version 0.9.9.1) gibt es die Option --recurse, die mit rdepends funktioniert.
22.
43
Wenn Sie hinzufügen --installed, ist die Ausgabe sogar für Pakete nützlich, die von vielen anderen verwendet werden können:apt-cache rdepends --installed packagename
quazgar
2
Es gibt eine etwas andere Syntax , die mir geholfen , zu unterscheiden zwischen empfiehlt Hängt, Schlägt vor, usw. Syntax ist sudo apt rdepends packagename(es wird Beachten Sie apt-cache nicht verwenden , sondern einfach apt)
Vahid Pazirandeh
4
Warum haben einige Pakete für die Ausgabe einen vertikalen Strich (Pipe-Symbol) vor sich?
Vahid Pazirandeh
62

aptitude hat eine ziemlich gute Art, damit umzugehen:

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

Standardmäßig wird nur der "am meisten installierte, stärkste, engste, kürzeste" Grund aufgeführt, aber Sie können ihn dazu verwenden aptitude -v why, alles auszugeben, was er findet.

Tumbleweed
quelle
4
Scheint, als würde es nur die installierten Pakete berücksichtigen, nicht alles, was verfügbar ist. Und das war es, was ich brauchte.
Tuukka Mustonen
3
Dafür willst du reverse-dependsInubuntu-dev-tools
Tumbleweed 25.07.13
Wie wäre es mit Debian?
Tuukka Mustonen
1
ubuntu-dev-toolsist in Debian
tumbleweed
Das ist toll. Ich habe erfahren, dass dies auf einem kopflosen Server openssh-server empfohlen (und daher installiert) wurde xauth, indem Hunderte von x11-Abhängigkeiten und Dutzende von nutzlosen Updates pro Monat hinzugefügt wurden. Das ist das Problem bei der automatisierten Paketverwaltung!
BaseZen
18
apt-cache showpkg <pkgname> 

Beispiel:

apt-cache showpkg lightdm
Morgen
quelle
Aktuelle Syntaxapt showpkg <pkgname>
l --marc l
16

Es gibt mehr als eine Möglichkeit, wobei jede Methode eine andere Ausgabe zeigt.

Für eine detaillierte Ansicht des vollständigen umgekehrten Abhängigkeitsbaums;

aptitude install apt-rdepends
apt-rdepends -r bash

Alternative;

apt-cache showpkg bash

Oder eine kurze Liste:

apt-cache rdepends bash
papashou
quelle
Was genau rdependszeigt dieser Baum? apt-rdepends php7.0-fpmzeigt sed. sedhängt nicht von PHP ab, geschweige denn von PHP FPM.
Dan Dascalescu
Es ist umgekehrt abhängig, es bedeutet, dass PHP von sed abhängt.
Erik Berkun-Drevnig
1
Hallo Leute, eigentlich steht "apt-rdepends" für "rekursive Abhängigkeit". Wenn Sie eine umgekehrte rekursive Abhängigkeit wünschen, müssen Sie apt-rdepends -r yourPackageNameHere
Folgendes eingeben
Die Manpage von apt-cache besagt, dass "rdepends eine Auflistung jeder umgekehrten Abhängigkeit eines Pakets zeigt". Während apt-rdepends die Option -r benötigt, um Abhängigkeiten umzukehren, wie @SebMa sagt.
NeilG
8

Die einfachste Option ist immer noch:

apt rdepends package-name

Hierfür müssen Sie kein Paket installieren.

Corrado Topi
quelle
1
Was trägt dies zur akzeptierten Antwort bei?
l0b0
2
Die akzeptierte Antwort hat damit nichts zu tun. Die Ausgabe ist völlig anders und für den menschlichen Verzehr viel nützlicher als die von apt-cache. Die Antwort erwähnt, dass apt-cache nicht überall standardmäßig installiert ist - das allein sollte ein guter Hinweis sein, warum diese Antwort ihren Zweck hat. Schließlich ist dies tatsächlich die Antwort, nach der ich gesucht habe, daher ist jede Ablehnung ziemlich dumm.
Stefanct
Ein sehr wichtiger Grund, warum dies besser ist als die akzeptierte Version, ist, dass es im Gegensatz zur Ausgabe von s die Version der Abhängigkeiten enthält apt-cache. Es ist genau das, was ich gerade brauchte (Debuggen einer glibc 2.28-Inkompatibilität, also Upvoting)
Per Lundberg
upvote für die Verwendung von nur apt. Zum Zeitpunkt der ursprünglichen Antwort bin ich mir nicht sicher, ob diese nur passende Lösung gültig gewesen wäre, aber wenn es jetzt ist, ist es gut.
RobotHumans
7

Zusätzlich zu anderen guten Antworten führt ein APT / APT-GET -sein "simuliertes" Entfernen (oder Installieren) durch.

sudo apt -s remove <pkgname>

Wenn Sie Pakete mit -soder --simulatedentfernen (oder installieren), werden normalerweise alle betroffenen Abhängigkeiten aufgelistet. Es werden verwaiste Pakete beim Entfernen oder benötigte Abhängigkeiten bei der Installation angezeigt, ohne dass das installoder ausgeführt wird remove. Nur zur Information.

bshea
quelle
apt remove -s php7.0-fpmzeigt The following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0. Warum sollte Apache installiert werden, wenn ich PHP FPM entferne?
Dan Dascalescu
@DanDascalescu Hmm. Könnte ein schlechtes Installations- / Entfernungsskript für apt pkg sein oder Sie haben möglicherweise einige andere Abhängigkeiten, die apache2 als dep installieren (was bedeutet, dass ein Webserver benötigt wird - und ich glaube, dass apache2 der Standard-Webserver ist). Könnten ein paar Dinge sein. Nur nicht sicher. Hat den Geruch eines guten Posts auf AskUbuntu, wenn Sie keine Antwort gefunden haben.
bshea