// Datei: ./werkzeuge/paketoperationen/warum-ist-ein-paket-installiert.adoc

// Baustelle: Rohtext

[[warum-ist-ein-paket-installiert]]

=== 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.

// Stichworte für den Index
(((aptitude, why)))
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 <<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 <<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.

// Stichworte für den Index
(((aptitude, -v why)))
(((aptitude, --verbose why)))

.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

...
$
----

// Stichworte für den Index
(((aptitude, --show-summary why)))
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`).

// ToDo: Namen und Abkürzungen überprüfen
// * H
// * E

.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.
$
----

// Stichworte für den Index
(((aptitude, why-not)))
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.
$
----

// Datei (Ende): ./werkzeuge/paketoperationen/warum-ist-ein-paket-installiert.adoc
