Moin Moin,
heute habe ich nach einer Möglichkeit gesucht, herauszufinden, welche Pakete welche Abhängigkeiten haben. Am Ende meiner Recherche wurden mir schöne bunte Graphen erzeugt. Dabei benötigt man dazu eigentlich nur zwei kleine Programme: Pactree und Graphviz.
Pactree
Pactree beschreibt sich selbst als „A simple dependency tree viewer.“ für Arch Linux. Man kann sich zum Beispiel ausgeben lassen, welche Abhängigkeiten das Paket „glibc“ hat:
> pactree glibc glibc ├─linux-api-headers ├─tzdata └─filesystem └─iana-etc
Die folgenden Switches werden wir gleich verwenden, um aus diesen Informationen schöne Grafiken zu bauen:
-c, --color colorize output -g, --graph generate output for graphviz's dot
Die Abhängigkeiten von Oben ergeben folgende „dot“-Beschreibung:
> pactree -c -g glibc digraph G { START [color=red, style=filled]; node [style=filled, color=green]; "START" -> "glibc"; "glibc" -> "linux-api-headers" [color=chocolate4]; "glibc" -> "tzdata" [color=chocolate4]; "glibc" -> "filesystem" [color=chocolate4]; "filesystem" -> "iana-etc" [color=chocolate4]; }
Interessant kann auch die Verwendung des Switches „-r“ sein.
-r, --reverse list packages that depend on the named package
Graphviz
Graphviz ist eine kleine Toolsammlung, welche genutzt werden kann, um schöne Graphen zu erzeugen. Zum Beispiel aus dem o.g. Code.
Um die Umwandlung durchzuführen, führt man folgendes Kommando aus:
dot -Tgif deps.graph -o deps.gif
Wobei „deps.graph“ für den Eingabegraphen in dot-Notation und deps.gif für die Ausgabe im GIF-Format steht. Eine Liste mit weiteren Formaten gibt es natürlich auch. Man muss nur entsprechend „-Tgif“ durch „-TFORMAT“ ersetzen.
Die Aufrufe lassen sich natürlich verketten:
pactree -c -g glibc | dot -Tgif -o /tmp/glibc.gif
Das Ergebnis sieht dann so aus:
Oder etwas komplexer, wie z.B. für das „Gimp“-Programm.
~ Sebastian