Diese Frage ähnelt der Frage Wie kann ich herausfinden, warum ein Paket installiert wurde? , aber in meinem Fall möchte ich vor der eigentlichen Installation eines Pakets wissen , warum es eine bestimmte Abhängigkeit installiert.
So könnte ich zum Beispiel rennen
sudo apt-get install superfoo
und die Ausgabe sagt etwas wie:
The following extra packages will be installed:
foo bar baz ... libderp libjunk
Und das könnte eine wirklich große Liste sein. In einigen Fällen wird etwas installiert, das für mich bei der Installation keinen Sinn ergibt. Daher möchte ich wissen, warum diese bestimmte Abhängigkeit installiert wird.
Nehmen wir im obigen Beispiel an, ich würde gerne verstehen, warum libderp
es installiert wird. Ich weiß, dass es irgendwie eine Kette von Abhängigkeiten zwischen superfoo
und gibt, libderp
aber die riesige Liste der zu installierenden Pakete macht es schwierig zu erkennen, was diese Kette ist.
Sobald ich die Abhängigkeitskette kenne, kann ich entscheiden, ob ich das Originalpaket wirklich installieren möchte oder nicht, und / oder ob ich mich mit dem Betreuer des Pakets in Verbindung setzen soll, um zu sehen, ob diese Abhängigkeiten dort wirklich benötigt werden.
quelle
Antworten:
Sie scheinen wirklich zu fragen: "Wie kann ich Abhängigkeiten grafisch darstellen?" So können Sie sehen, welche Pakete in welchen Abhängigkeiten abgelegt werden.
Sie erhalten vom
apt-cache
Befehl sowohl Text- als auch Diagrammabhängigkeiten (im apt-Paket enthalten, Teil der Standardinstallation).Hier ist ein Beispiel für apt-cache zum Auflisten von Abhängigkeiten des 'Hallo'-Pakets im Textformat. Die Textausgabe erfolgt immer nur auf einer Ebene.
Sie können das Diagramm mit einem beliebigen Dotfile-Viewer lesen, z. B.
dotty
(im graphviz-Paket enthalten, ebenfalls Teil der Standardinstallation).Im folgenden Beispiel wird der vollständige Abhängigkeitsbaum grafisch dargestellt und anschließend angezeigt. Die grafische Ausgabe ist immer der vollständige Baum.
Wenn Sie es sich ansehen, können Sie sehen, dass das 'Hallo'-Paket eine Menge Perl-Pakete einpackt ... und welche Abhängigkeit dies bewirkt.
quelle
apt-cache depends --recurse
Sie erhalten ein vollständiges Bild, aber apt-rdepends unten ist besser, weil es nur den tatsächlichen Abhängigkeiten folgt, nicht den empfohlenen oder vorgeschlagenen.--no-install-recommends
Flag verwenden.|
apt-rdepends
tut dies, ohne mehr als 50 Bibliotheken von Cruft-like zu installierenubuntu-dev-tools
.Auf meinem sauberen Ubuntu-Server installieren,
apt-rdepends
nurlibapt-pkg-perl
für die Installation erforderlich . Es ist dann viel leichterubuntu-dev-tools
und dennoch rekursiv, sodass Sie alle Abhängigkeiten erhalten, anstatt nur die Abhängigkeiten erster Ordnung, wie zapt-cache depends
. B. Rückgaben.quelle
Möglicherweise gibt es eine einfachere Möglichkeit, dies zu tun. Sie können jedoch auch die umgekehrte Methode verwenden. Sie müssen dazu das Paket ubuntu-dev-tools installieren
apt-get install ubuntu-dev-tools
Oder durch Klicken auf diese Schaltfläche:
Nach der Installation können Sie dann mithilfe der umgekehrten Abhängigkeiten feststellen, was von einem bestimmten Paket abhängt. Wenn Sie beispielsweise versuchen, etwas zu installieren, das eine Reihe zusätzlicher Pakete installieren möchte, und Sie möchten sehen, warum "libsmpeg0" installiert wird, führen Sie es aus
Welches würde das folgende ausgeben.
Sehen Sie sich an, ob das zu installierende Paket in dieser Liste enthalten ist. Ist dies nicht der Fall, wird in dieser Liste ein anderes Paket angezeigt, das während der Erstinstallation abgerufen wird, und Sie müssen das Paket abhängig von der Ausführung in umgekehrter Reihenfolge ausführen. Schließlich sehen Sie in dieser Liste das ursprüngliche Paket, das Sie installieren möchten. Zu diesem Zeitpunkt sollten Sie eine Kette haben, die genau anzeigt, warum das Paket installiert wurde.
Als zusätzliche Anmerkung glaube ich, dass Recommends standardmäßig aktiviert ist. Wenn also etwas als Recommended festgelegt ist, wird es in die Liste aufgenommen. Schlägt vor, wenn aus, aber in umgekehrter Reihenfolge können diese Informationen auch angezeigt werden.
quelle
ubuntu-dev-tools
führt dazu, dass die folgenden Pakete installiert werden.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
(Hinweis: Das obige war nur die erforderlichen Pakete vonsudo apt-get install ubuntu-dev-tools
einer ziemlich sauberen Ubuntu-Server-Instanz). Wenn Sie versuchen, die Installation großer Mengen Cruft zu vermeiden , ist dies wahrscheinlich die schlechteste Lösung.