8.17. Warum ist ein Paket installiert

Mit der Zeit sammeln sich auf Ihrem System recht viele Pakete an. Bedingt durch die vorab definierten Paketabhängigkeiten schaufelt die Paketverwaltung etliches an Daten auf die Platte und füllt den verfügbaren Speicherplatz stetig, aber gnadenlos.

Möchten Sie klären, warum ein Paket installiert wurde, gibt Ihnen aptitude dazu bereitwillig Auskunft. Es versteht dazu das Unterkommando why, mit dem es Ihnen die Gründe auflistet, die zur Installation des besagten Pakets geführt haben. Grundlage dafür sind einerseits die Paketflags (siehe dazu Abschnitt 2.15, „Lokale Paketmarkierungen“) und andererseits die Einträge in der Paketbeschreibung. aptitude wertet daraus die fünf Felder Recommends, Conflicts, Depends, Replaces und Provides aus (siehe Abschnitt 4.1, „Konzepte und Ideen dahinter“). Über diese vorgenannten Felder legt der Paketmaintainer die Beziehungen zu anderen Paketen fest.

Nachfolgendes Beispiel zeigt den Aufruf zum Paket xpdf. Ersichtlich wird daraus, dass das Paket texpower wiederum xpdf oder ein Paket aus der Gruppe pdf-viewer empfiehlt. Die Alternative wird hier durch einen senkrechten Strich – das Pipe-Symbol – dargestellt. Das Paket xpdf ist bereits installiert, wird jedoch wiederum auch vom Paket texlive-latex-extra genutzt. Das Paket texpower wurde automatisch installiert, was Sie anhand des Buchstabens A in der dritten Spalte der dritten Zeile in nachfolgender Ausgabe sehen können.

Ausgabe von aptitude zur Klärung der Installation (Variante 1). 

$ aptitude why xpdf
i   texlive-latex-extra Empfiehlt texpower (>= 0.2-2)
i A texpower            Empfiehlt xpdf | pdf-viewer
$

Für eine wesentlich ausführlichere Ausgabe nutzen Sie den Schalter -v. Dieser besitzt die übliche Langform --verbose und ergänzt die Ausgabe um alle Pakete, die zur Installation führen können. Hintergrund dafür ist, dass aptitude aus den Paketinformationen sämtliche Abhängigkeits- und Installationspfade errechnet und Ihnen diese auflistet.

Ausführliche Darstellung der Installationspfade (Ausschnitt). 

$ aptitude --verbose why xpdf
i   mc Schlägt vor xpdf | pdf-viewer

i   nautilus Schlägt vor evince | pdf-viewer
i   xpdf     Liefert     pdf-viewer

i   dot2tex          Empfiehlt    pgf (>= 2.00) | texlive-pstricks
i A texlive-pstricks Hängt ab von texlive-base (>= 2012.20120516)
i A texlive-base     Schlägt vor  xpdf-reader | pdf-viewer
i   xpdf             Liefert      pdf-viewer

...
$

In Kombination mit dem Schalter --show-summary fassen Sie diese Informationen zusammen und erhalten eine kompaktere Darstellung. Der Schalter erlaubt die fünf Werte no-summary, first-package, first-package-and-type, all-packages und all-packages-with-dep-versions. Geben Sie den Schalter beim Aufruf nicht an, wird show-summary auf den Wert no-summary gesetzt. Spezifizieren Sie keinen Wert für show-summary, wird hingegen first-package angenommen. Damit erhalten Sie bei einem Aufruf die folgende Ausgabe – hier beispielhaft für das Paket foomatic-db:

Zusammenfassung für das Paket foomatic-db

$ aptitude -v --show-summary why foomatic-db
Pakete, die foomatic-db erfordern:
  bluetooth
  cups-pdf
  printer-driver-gutenprint
$

Der Wert first-package-and-type liefert Ihnen zudem eine Begründung für die Abhängigkeit:

Zusammenfassung für das Paket foomatic-db (mit Begründung). 

$ aptitude -v --show-summary=first-package-and-type why foomatic-db
Pakete, die foomatic-db erfordern:
  [Hängt ab von] bluetooth
  [Hängt ab von] cups-pdf
  [Hängt ab von] printer-driver-gutenprint
$

Eine Übersicht zu allen Paketpfaden, die zum genannten Paket führen, erhalten Sie mit Hilfe des Wertes all-packages. Dabei stehen die Buchstaben hinter den Paketnamen für Recommends (R), Conflicts (C), Depends (D), Replaces (?) und Provides (P).

Zusammenfassung für das Paket foomatic-db (ausführlicher). 

$ aptitude -v --show-summary=all-packages why foomatic-db
Pakete, die foomatic-db erfordern:
  bluetooth E: bluez-cups H: cups E: foomatic-filters E: foomatic-db-engine E: foomatic-db
  cups-pdf H: cups E: foomatic-filters E: foomatic-db-engine E: foomatic-db
  printer-driver-gutenprint H: cups E: foomatic-filters E: foomatic-db-engine E: foomatic-db
$

Benötigen Sie zudem noch die Versionsnummer, von der dieses Paket abhängt, setzen Sie den Wert von --show-summary auf den Wert all-packages-with-dep-versions:

Zusammenfassung für das Paket foomatic-db (ausführlicher mit Versionsangabe). 

$ aptitude -v --show-summary=all-packages-with-dep-versions why foomatic-db
Pakete, die foomatic-db erfordern:
  bluetooth E: bluez-cups H: cups E: foomatic-filters (>= 4.0) E: foomatic-db-engine (>= 4.0) E: foomatic-db
  cups-pdf H: cups E: foomatic-filters (>= 4.0) E: foomatic-db-engine (>= 4.0) E: foomatic-db
  printer-driver-gutenprint H: cups (>= 1.3.0) E: foomatic-filters (>= 4.0) E: foomatic-db-engine (>= 4.0) E: foomatic-db
$

Bestehen hingegen keine Gründe für eine Installation oder aptitude kann diese nicht zweifelsfrei ermitteln, liefert es die nachfolgende Ausgabe – hier am Beispiel des Pakets libruby-extras:

Ausgabe von aptitude zur Klärung der Installation (Variante 2). 

$ aptitude why libruby-extras
Kann keinen Grund für die Installation von libruby-extras finden.
$

Das Gegenstück zum Unterkommando why ist why-not. aptitude listet damit den Grund auf, warum das Paket bislang nicht installiert oder bereits wieder entfernt wurde. Nachfolgendes Beispiel zeigt das anhand des Audioprogramms mplayer. Dieses Paket wird von rtmpdump vorgeschlagen, welches automatisch installiert wurde und vom Paket youtube-dl empfohlen wird. Außerdem kollidieren die beiden Pakete mplayer und mplayer2 miteinander, sodass im Bedarfsfall nur eines von beiden auf ihrem System installiert sein darf.

Ausgabe von aptitude zur Klärung der Installation (Variante 3). 

$ aptitude why-not mplayer
i   youtube-dl Empfiehlt      rtmpdump
i A rtmpdump   Schlägt vor    mplayer
p   mplayer2   Liefert        mplayer
p   mplayer2   Kollidiert mit mplayer
$

Kann aptitude keinen Grund für die Entfernung finden, meldet es sich mit einer kurzen Meldung dazu zurück – hier am Beispiel des KDE Desktop Managers aus dem Paket kdm:

Ausgabe von aptitude zur Klärung der Installation (Variante 4). 

$ aptitude why-not kdm
Kann keinen Grund für die Entfernung von kdm finden.
$