Vor vielen Jahren habe ich Windows auf meinem Desktop durch Linux ersetzt und mittlerweile einige Distributionen im Einsatz gehabt. Immer habe ich die schnelle und einfache Installation von Software über die Paketmanager als einen der größten Vorteile gegenüber Windows gesehen. Besonders die Möglichkeit zum Einbinden von Drittquellen fand ich immer toll. Damit war die Möglichkeit geboten, Updates an einer einzigen Stelle (dem Paketmanager) durchzuführen, ohne dass man auf den “Store” der Distribution angewiesen ist.

Anzeige:

Ja, die Sicherheitsproblematik bei Drittquellen ist mir bewusst, dieses Problem habe ich aber in noch größerem Maße beim Download von Software über irgendwelche Webseiten. Daher hoffe ich, auch in Zeiten von Flatpaks, Snaps und Appimages, dass uns die Paketmanager noch lange erhalten bleiben.

Sicherlich ist die Aufgabe, die Paketmanager zu bewältigen haben, gewaltig. Programme bringen Abhängigkeiten mit, die wiederum Abhängigkeiten haben, die wiederum…

Bei der Installation zeigen einem die Paketmanager an, welche Software durch Abhängigkeiten zusätzlich zum gewünschten Programm installiert wird. Leider zeigen sie nicht an, welches Paket welche Abhängigkeit auslöst.

Dies kann man sehr schön mit dem Programm debtree visualisieren

Debtree – Installation und Funktion

In der Debian/Ubuntu/Mint-Familie lässt sich debtree direkt aus den Paketquellen installieren. Zusätzlich wird graphviz benötigt, um aus den von debtree erzeugten DOT-Files ein Bild zu erstellen.

sudo apt install debtree graphviz

Anschließend kann die erste Grafik erzeugt werden. Zum testen eignet sich ein Paket, das relativ wenige Abhängigkeiten mitbringt. Beispielsweise nano oder openssl.

$ debtree nano | dot -Tpng > nano.png
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen…. Fertig
I: The following dependencies have been excluded from the graph (skipped):
I: libc6

Wie man sieht, hat debtree zuerst die Abhängigkeiten eingelesen, davon allerdings auch welche übersprungen. In diesem Fall die libc6.
Debtree hat in der Datei /etc/debtree/skiplist einige Abhängigkeiten definiert, die standardmäßig ignoriert werden. Es handelt sich dabei um Abhängigkeiten, die so gewöhnlich sind, dass sie in einem Großteil der Grafiken auftauchen würden und diese unnötig aufblasen. Die Liste kann man nach den eigenen Wünschen anpassen.

Mit der Option –no-skip soll sich das Anwenden dieser Liste deaktivieren lassen. Leider hat dies bei mir nicht funktioniert. Das Anwenden von –no-skip hatte keinerlei Auswirkungen. Alternativ kann man die skiplist anpassen, oder mit der Option –show-all alle Abhängigkeiten anzeigen lassen. Diese Möglichkeit hat funktioniert, führt aber bei Paketen mit vielen Abhängigkeiten schnell zu einer riesigen Datei.

Zusätzlich gibt es unter /etc/debtree/endlist eine Liste mit Paketen, deren Abhängigkeiten nicht weiter verfolgt werden. Im Gegensatz zu den Paketen in der Skiplist, die gar nicht in der Grafik auftauchen, werden die Pakete in der endlist in der Grafik angezeigt. Allerdings endet die Linie mit Abhängigkeiten nach diesem Paket.

Anzeige:

Nach dem Ausführen des Befehls erhält man folgende Grafik.

Abhängigkeiten von Nano mit Debtree visualisiert

Bei Paketen mit vielen Anhängigkeiten wird die Grafik schnell sehr riesig und unübersichtlich. Dies sieht man beispielsweise, wenn man sich die Abhängigkeiten des Webservers NGINX, ohne das setzen zusätzlicher Optionen, anzeigen lässt. Dabei handelt es sich auch bei NGINX noch um ein Paket mit relativ wenigen Abhängigkeiten. Möchte man die Abhängigkeiten des Pakets gnome-shell anzeigen, kapituliert dot mit folgender Meldung “dot: graph is too large for cairo-renderer bitmaps. Scaling by 0.533022 to fit” Auch angepasste Image ist anschließend noch knapp 55 MB groß.

NGINX Abhängigkeiten mit debtree visualisiert

Debtree Optionen

Um zu vermeiden, dass man riesige und damit unbrauchbare Grafiken erhält, bietet Debtree einige Optionen um die Ausgabe zu beeinflussen.

–no-recommendsEmpfohlene Pakete werden nicht angezeigt.
–no-alternativesWenn verschiedene Pakete eine Abhängigkeit erfüllen können, wird nur die erste angezeigt.
–no-providesKeine virtuellen Pakete anzeigen.
–no-conflictsPakete die mit dem abgefragten Paket in Konflikt stehen werden nicht angezeigt
–max-depth=numberAbhängigkeiten werden nur bis zu einer bestimmten Ebene angezeigt

Natürlich finden sich in der Manpage noch eine Vielzahl weiterer Optionen, mit denen sich die Ausgabe beeinflussen lässt. Hierbei handelt es sich meiner Meinung nach um die wichtigsten.

Debtree Grafiken interpretieren

Die verschiedenen Pfeile, Farben und Formen haben folgende Bedeutungen.

Farbe der PfeileBedeutung
BlauDirekte Abhängigkeit
SchwarzEmpfohlenes Paket (recommends)
Schwarz, gepunktetVorgeschlagenes Paket (suggests)
GrünStellt zur Verfügung (provides)
RotKonflikt
Form der KästenBedeutung
Rechteckig, fetter RandDas Paket, welches untersucht wird
Rechnteckig, normaler RandNormale Pakete
Rechteckig, direkt untereinanderAlternative Pakete mit der selben Funktion
RautePaket, dessen Abhängigkeit nicht weiter verfolgt wird.
AchteckigVirtuelles Paket

Paketmanager haben ja im Normalfall die tolle Eigenschaft, wie durch Magie die benötigten Abhängigkeiten bereit zu stellen. Mit debtree lässt sich schön darstellen, wie diese Magie funktioniert, wie komplex die Abläufe sind und mit welchen Entscheidungen ein Paketmanager unter Umständen zu kämpfen hat.

Anzeige:
Fire 7-Tablet mit Alexa, 17,7 cm (7 Zoll) Display, 8 GB (Schwarz)
Preis: EUR 54,99
(Stand von: 22.03.2019 10:56 - Details
×
Produktpreise und -verfügbarkeit sind zum angegebenen Datum / Uhrzeit korrekt und können sich ändern. Alle Preis- und Verfügbarkeitsinformationen auf https://www.amazon.de/ zum Zeitpunkt des Kaufs gelten für den Kauf dieses Produkts.
)
1 neu von EUR 54,993 gebraucht von EUR 36,55
  • Die neue Generation unseres Bestsellers - jetzt dünner, leichter, mit längerer Akku-Laufzeit und verbessertem Display.
  • Brillantes 7-Zoll-IPS-Display mit höherem Kontrast und schärferem Text, 1,3 GHz Quad-Core-Prozessor und bis zu 8 Stunden Akku-Laufzeit. 8 oder 16 GB interner Speicher und microSD-Kartenslot für bis zu 256 GB erweiterbaren Speicherplatz.
  • Fragen Sie einfach Alexa, um schnell auf Informationen und Unterhaltungsinhalte zuzugreifen. Sie können zudem Fragen stellen, Musik abspielen, Ihren Kalender, die Nachrichten oder den Wetterbericht abrufen und mehr.
  • Fragen Sie Alexa, um Sprachanrufe zu tätigen, Nachrichten zu senden oder Videoanrufe mit Freunden und Familienmitgliedern mit einem kompatiblen Fire-Tablet, unterstütztem Echo-Gerät oder der Alexa App zu führen. Verbinden Sie sich schnell mit anderen Echo-Geräten bei Ihnen zuhause.
  • Genießen Sie Millionen Filme, Serienepisoden, Songs, Kindle eBooks, Apps und Spiele - einschließlich Amazon Video, Netflix, Facebook, Spotify, TuneIn, Instagram und mehr.
  • Prime-Mitglieder erhalten unbegrenzten Zugang zu über zwei Millionen Songs, Tausenden Filmen, Serienepisoden und sicherem Fotospeicher - ohne zusätzliche Kosten.
  • Mit einer Prime-Mitgliedschaft oder einem Netflix-Abo können Sie heruntergeladene Videos überall anschauen - ohne zusätzliche Kosten.

HINTERLASSEN EINEN KOMMENTAR

Please enter your comment!
Die Angabe von Name oder Webseite ist optional. Weitere Informationen: siehe Datenschutzerklärung

Please enter your name here