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.

Anzeige:

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.

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-recommends Empfohlene Pakete werden nicht angezeigt.
–no-alternatives Wenn verschiedene Pakete eine Abhängigkeit erfüllen können, wird nur die erste angezeigt.
–no-provides Keine virtuellen Pakete anzeigen.
–no-conflicts Pakete die mit dem abgefragten Paket in Konflikt stehen werden nicht angezeigt
–max-depth=number Abhä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 Pfeile Bedeutung
Blau Direkte Abhängigkeit
Schwarz Empfohlenes Paket (recommends)
Schwarz, gepunktet Vorgeschlagenes Paket (suggests)
Grün Stellt zur Verfügung (provides)
Rot Konflikt
Form der Kästen Bedeutung
Rechteckig, fetter Rand Das Paket, welches untersucht wird
Rechnteckig, normaler Rand Normale Pakete
Rechteckig, direkt untereinander Alternative Pakete mit der selben Funktion
Raute Paket, dessen Abhängigkeit nicht weiter verfolgt wird.
Achteckig Virtuelles 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:
Echo Dot (3. Gen.) Intelligenter Lautsprecher mit Alexa, Anthrazit Stoff
Preis: EUR 34,99
(Stand von: 25.05.2019 13:25 - 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.
)
Sie sparen: EUR 25,00 (42 %)
1 neu von EUR 34,990 gebraucht
  • Echo Dot ist unser beliebtester sprachgesteuerter Lautsprecher und bietet jetzt noch besseren Klang im Vergleich zur Vorgängergeneration des Echo Dot sowie ein neues Design.
  • Alexa kann Musik abspielen, Fragen beantworten, die Nachrichten und den Wetterbericht vorlesen, Wecker stellen, kompatible Smart Home-Geräte steuern und vieles mehr.
  • Streamen Sie Songs von Amazon Music, Spotify, TuneIn und mehr mit satterem und lauterem Klang.
  • Sie können Personen, die ein Echo-Gerät, die Alexa App oder Skype haben, per Sprachbefehl anrufen oder ihnen Nachrichten schicken. Verbinden Sie sich direkt über Drop In mit anderen Räumen in Ihrem Zuhause oder machen Sie eine Ankündigung auf allen kompatiblen Echo-Geräten.
  • Alexa lernt ständig dazu und erhält neue Funktionen und Skills, zum Beispiel Fitness-Tracking, Spiele und vieles mehr.
  • Vier Fernfeld-Mikrofone stellen sicher, dass Alexa Sie auch von der anderen Seite des Raums hört. Und wenn Sie kompatible Echo-Geräte in verschiedenen Räumen aufstellen, können Sie das gesamte Haus mit Musik füllen.
  • Echo Dot kann zudem über Bluetooth oder ein 3,5-mm-Audiokabel mit Ihren Lautsprechern verbunden werden.
  • Steuern Sie kompatible Lampen, Thermostate, Türschlösser und vieles mehr, allein mit Ihrer Stimme.

Hinterlasse einen Kommentar

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

Please enter your name here