Wie bisher gezeigt wurde, bauen dpkg
, APT und Freunde aufeinander
auf. Dabei gibt es eine Reihe von Bibliotheken und weiteren Programmen,
die zur Nutzung dieser Werkzeuge ebenfalls notwendig sind.
APT hängt vor allem von der aus dem APT-Quellcode gebauten Bibliothek libapt-pkg, von gnupg und debian-archive-keyring ab. libapt-pkg stellt eine Schnittstelle für den Zugriff auf die Debianpakete bereit (siehe „APT und Bibliotheken“ in Kapitel 5, APT und Bibliotheken). Die beiden anderen Pakete werden hingegen für die Validierung von digitalen Signaturen benötigt (siehe „Bezogenes Paket verifizieren“ in Abschnitt 8.32.1, „Prüfung eines Paketes auf Unversehrtheit“).
dpkg
ist ein sog. essentielles Paket (siehe
Abschnitt 2.13, „Paket-Priorität und essentielle Pakete“), hat also eher wenig
Abhängigkeiten. Die meisten davon sind selbst essentielle Pakete und
müssen daher nicht namentlich als Abhängigkeit in den Metadaten des
Pakets aufgeführt werden. Deshalb tauchen sie nur unter bestimmten
Umständen explizit in den Abhängigkeitslisten auf, z.B. wenn bestimmte
Einschränkungen bzgl. der Version bestehen.
Bei aptitude
und den meisten anderen Frontends ist dies anders, denn
diese sind alle um eine ganze Spur komplexer. Bei aptitude
kommt z.B.
noch die Benutzeroberfläche auf der Basis von Ncurses [Ncurses] hinzu.
Abbildung 2.2, „Paketabhängigkeiten von APT“, Abbildung 2.3, „Paketabhängigkeiten von dpkg
“ und Abbildung 2.4, „Paketabhängigkeiten von aptitude
und APT“ zeigen die
minimalen Paketabhängigkeiten für APT, dpkg
und aptitude
in
graphischer Form.
Die Grafiken in den drei obigen Abbildungen erzeugen Sie mit Hilfe der
beiden Programme debtree
[Debian-Paket-debtree] (siehe
[debtree-Projektseite]) und dot
[Graphviz]. Ersteres berechnet
über die Metadaten in den Paketlisten die Abhängigkeiten zu anderen
Paketen und erzeugt daraus eine entsprechende Beschreibung des
Abhängigkeitsgraphen in der Sprache dot.
Erzeugung der Abhängigkeitsgraphen zu dpkg
mittels debtree
.
$ debtree dpkg Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Statusinformationen werden eingelesen... Fertig digraph "dpkg" { rankdir=LR; node [shape=box]; "dpkg" -> "libbz2-1.0" [color=purple,style=bold]; "dpkg" -> "liblzma5" [color=purple,style=bold,label="(>= 5.1.1alpha+20120614)"]; "dpkg" -> "libselinux1" [color=purple,style=bold,label="(>= 2.3)"]; "libselinux1" -> "libpcre3" [color=blue,label="(>= 8.10)"]; "dpkg" -> "tar" [color=purple,style=bold,label="(>= 1.23)"]; "tar" -> "libacl1" [color=purple,style=bold,label="(>= 2.2.51-8)"]; "libacl1" -> "libattr1" [color=blue,label="(>= 1:2.4.46-8)"]; "libacl1" -> "libacl1-kerberos4kth" [color=red]; "tar" -> "libselinux1" [color=purple,style=bold,label="(>= 1.32)"]; "dpkg" [style="setlinewidth(2)"] "libacl1-kerberos4kth" [style=filled,fillcolor=oldlace]; } I: The following dependencies have been excluded from the graph (skipped): I: libc6 multiarch-support zlib1g // Excluded dependencies: // libc6 multiarch-support zlib1g // total size of all shown packages: 11501568 // download size of all shown packages: 4358750 $
Das zweite Kommando dot
wandelt diese Beschreibung über den Schalter
-T
Ausgabeformat in eine hübsche Grafik um. Als Ausgabeformat
unterstützt dot
derzeit bspw. PostScript, Structured Vector Graphics
(SVG), GIF, PNG und FIG (für die Verwendung in xfig
). Beachten Sie
bitte, dass dot
im Aufruf zwischen dem Schalter und dem von Ihnen
gewählten Ausgabeformat kein Leerzeichen erlaubt.
Für dpkg
erhalten Sie die Abbildung im Bildformat Portable Network
Graphics (PNG) mit dem nachfolgend gezeigten Aufruf auf der
Kommandozeile. Dabei wird die Ausgabe des debtree
-Kommandos nicht auf
dem Terminal sichtbar, sondern wird mit dem Pipe-Operator |
direkt an
das Programm dot
weitergegeben, welches es als Eingabe verarbeitet.
Die Ausgabe von dot
– die erzeugte Bilddatei – wird danach mit dem
Umleitungsoperator >
in die Datei dpkg.png
im aktuellen Verzeichnis
umgeleitet.
Erzeugung der Abhängigkeitsgraphen und Speicherung als Rastergrafik.
$ debtree dpkg | dot -Tpng > dpkg.png $