// Datei: ./werkzeuge/paketoperationen/paketinhalte-anzeigen-apt-file.adoc

// Baustelle: Fertig

[[paketinhalte-anzeigen-apt-file]]

=== Paketinhalte anzeigen ===

// Stichworte für den Index
(((apt-file, list)))
(((apt-file, show)))
(((dglob, -af)))
(((dglob, -f)))
(((dlocate, -ls)))
(((dpkg, -c)))
(((dpkg, --contents)))
(((dpkg, -L)))
(((dpkg, --listfiles)))
(((dpkg-deb, -c)))
(((dpkg-deb, --contents)))
(((dpkg-query, -L)))
(((dpkg-query, --listfiles)))
(((Paket, Inhalte anzeigen)))
In einem Paket sind stets mehrere Dateien zusammengefasst. Mit den sechs
Werkzeugen `dpkg`, `dpkg-deb`, `dpkg-query`, `dlocate`, `apt-file` und
`dglob` zeigen Sie den Inhalt eines Pakets an. Dabei sind `dpkg-deb` und
`dpkg-query` Hilfsprogramme von `dpkg` und verstehen die gleichen
Schalter.

Es sind mehrere Fälle zu unterscheiden, die jeweils unterschiedliche
Aufrufe nachsichziehen:

das Paket ist bereits installiert:: 
`dpkg -L` 'Paketname', `dpkg-query -L` 'Paketname', `dlocate -ls`
'Paketname' sowie mittels `dglob -f` 'Paketname'. Der Parameter
'Paketname' bezeichnet lediglich den Namen des Pakets (siehe
<<benennung-eines-debian-pakets>>) ohne Angabe der Versionsnummer.

das Paket ist nicht installiert, liegt aber als Datei vor::
`dpkg -c` 'deb-Datei' oder `dpkg-deb -c` 'deb-Datei'. Der Parameter
'deb-Datei' ist ein Paketarchiv in Form einer lokal vorliegenden Datei.
Befindet sich die Datei nicht im aktuellen Verzeichnis, von dem aus Sie
das Kommando aufrufen, ergänzen Sie im Aufruf den dazugehörigen
Verzeichnispfad, in dem das Paketarchiv liegt.

das Paket muss nicht installiert sein, kann aber:: 
`apt-file show` 'Paketname', `apt-file list` 'Paketname' und `dglob -f`
'Paketname'. Der Parameter 'Paketname' bezeichnet hier lediglich den
Namen eines Pakets (siehe <<benennung-eines-debian-pakets>>) ohne Angabe
der Versionsnummer.

==== `dpkg -L` 'Paketname' ====

// Stichworte für den Index
(((dpkg, -L)))
(((dpkg, --listfiles)))
(((dpkg-query, -L)))
(((dpkg-query, --listfiles)))
Die Langform des Schalters ist `--listfiles`. Beide Schalter versteht
ebenso das Hilfsprogramm `dpkg-query` und erzeugt die gleiche Ausgabe.
Damit listen Sie den Paketinhalt mit allen Pfaden auf. Jede
Verzeichnisebene ist separat aufgeführt. Das nachfolgende Beispiel
verdeutlicht das am Paket 'xterm'.

.Auflistung des Paketinhalts mit allen Pfaden via `dpkg`
----
$ dpkg -L xterm 
/.
/etc
/etc/X11
/etc/X11/app-defaults
/etc/X11/app-defaults/UXTerm-color
/etc/X11/app-defaults/UXTerm
/etc/X11/app-defaults/KOI8RXTerm-color
/etc/X11/app-defaults/KOI8RXTerm
/etc/X11/app-defaults/XTerm-color
/etc/X11/app-defaults/XTerm
...
$
----

==== `dlocate -L` 'Paketname' ====

// Stichworte für den Index
(((dlocate, -L)))
Eine identische Ausgabe zum vorherigen `dpkg`-Aufruf ermöglicht Ihnen
das Programm `dlocate` <<Debian-Paket-dlocate>> mit dem Schalter `-L`.
Beachten Sie hierbei jedoch, dass `dlocate` die Angabe des Paketnamens
als regulären Ausdruck interpretiert. 

==== `dlocate -ls` 'Paketname' ====

// Stichworte für den Index
(((dlocate, -ls)))
Nutzen Sie statt `-L` hingegen den Schalter `-ls`, wird die Ausgabe sehr
ausführlich. Es entspricht dem Aufruf des UNIX-Kommandos `ls -ldF`
bezogen auf alle Dateien, die in dem Paket enthalten sind.

.Auflistung des Paketinhalts in ausführlicherer Form via `dlocate`
----
$ dlocate -ls xterm
drwxr-xr-x   22 root root   4096 Sep 11 09:12 /./
drwxr-xr-x  160 root root  12288 Feb  7 05:58 /etc/
drwxr-xr-x   13 root root   4096 Dez 30  2017 /etc/X11/
drwxr-xr-x    2 root root   4096 Jul  8  2020 /etc/X11/app-defaults/
-rw-r--r--    1 root root   2400 Mär  1  2015 /etc/X11/app-defaults/KOI8RXTerm
-rw-r--r--    1 root root   6217 Mär  1  2015 /etc/X11/app-defaults/KOI8RXTerm-color
-rw-r--r--    1 root root   3609 Mär  1  2015 /etc/X11/app-defaults/UXTerm
-rw-r--r--    1 root root   6209 Mär  1  2015 /etc/X11/app-defaults/UXTerm-color
-rw-r--r--    1 root root  10201 Mär  1  2015 /etc/X11/app-defaults/XTerm
-rw-r--r--    1 root root   6207 Mär  1  2015 /etc/X11/app-defaults/XTerm-color
...
$
----

==== `dpkg -c` 'deb-Datei' ====

// Stichworte für den Index
(((dpkg, -c)))
(((dpkg, --contents)))
(((dpkg-deb, -c)))
(((dpkg-deb, --contents)))
Sie verwenden den Schalter `-c`, um sich den Inhalt eines `deb`-Pakets
anzeigen zu lassen (Langform `--contents`). Dieses Paket wird `dpkg` als
Parameter übergeben und kann sowohl eine Datei in einem lokalen
Verzeichnis bezeichnen, als auch den Namen eines Archivs. Im Gegensatz
zu `dpkg -L` muss das Paket nicht auf ihrem System installiert sein.
Intern übergibt `dpkg` die Ausführung an `dpkg-deb`, welches Sie auch
separat aufrufen können.

.Auflistung des Paketinhalts mit allen Informationen via `dpkg`
----
$ dpkg -c /var/cache/apt/archives/xterm_312-2_amd64.deb
drwxr-xr-x root/root         0 2015-03-01 12:47 ./
drwxr-xr-x root/root         0 2015-03-01 12:47 ./etc/
drwxr-xr-x root/root         0 2015-03-01 12:47 ./etc/X11/
drwxr-xr-x root/root         0 2015-03-01 12:47 ./etc/X11/app-defaults/
-rw-r--r-- root/root      6209 2015-03-01 12:47 ./etc/X11/app-defaults/UXTerm-color
-rw-r--r-- root/root      3609 2015-03-01 12:47 ./etc/X11/app-defaults/UXTerm
-rw-r--r-- root/root      6217 2015-03-01 12:47 ./etc/X11/app-defaults/KOI8RXTerm-color
-rw-r--r-- root/root      2400 2015-03-01 12:47 ./etc/X11/app-defaults/KOI8RXTerm
-rw-r--r-- root/root      6207 2015-03-01 12:47 ./etc/X11/app-defaults/XTerm-color
-rw-r--r-- root/root     10201 2015-03-01 12:47 ./etc/X11/app-defaults/XTerm
...
$
----

==== `apt-file show` 'Paketname' und `apt-file list` 'Paketname' ====

// Stichworte für den Index
(((apt-file, list)))
(((apt-file, show)))
Die beiden Optionen `show` und `list` des Werkzeugs `apt-file` sind
synonym zueinander. Wie `dpkg -L liefern sie den Inhalt des Paketes,
allerdings nur die Dateien und nicht wie `dpkg -L` auch noch die
enthaltenen (potentiell sogar leeren) Verzeichnisse. Dafür zeigt
`apt-file show` immer auch noch den Paketnamen als Präfix in jeder
Zeile mit an.

.Paketinhalt in kompakter Form mittels `apt-file`
----
$ apt-file show xterm
xterm: /etc/X11/app-defaults/KOI8RXTerm
xterm: /etc/X11/app-defaults/KOI8RXTerm-color
xterm: /etc/X11/app-defaults/UXTerm
xterm: /etc/X11/app-defaults/UXTerm-color
xterm: /etc/X11/app-defaults/XTerm
xterm: /etc/X11/app-defaults/XTerm-color
xterm: /usr/bin/koi8rxterm
xterm: /usr/bin/lxterm
xterm: /usr/bin/resize
xterm: /usr/bin/uxterm
xterm: /usr/bin/xterm
...
$
----

[NOTE]
.Unterschiedliches Verhalten von `apt-file` in den Veröffentlichungen
====
In Debian 8 _Jessie_ bzw. vor Version 3.0 verhält sich `apt-file show`
bzw. `apt-file list` anders als in den nachfolgenden
Debian-Veröffentlichungen. Eine Suche mittels `list` und `show` gibt
alle Pakete aus, in denen das Suchmuster im Paketnamen vorkommt. Eine
Suche nach `xterm` liefert zum Beispiel auch Treffer für die Pakete
`ajaxterm`, `kxterm` und `xtermcontrol`.

Ab Debian 9 _Stretch_ bzw. `apt-file` Version 3.0 zeigen `apt-file
show` und `apt-file list` nur noch die Dateien für genau das
angegebene Paket an.
====

==== Einsatz von `dglob` ====

// Stichworte für den Index
(((dglob, -f)))
(((Debianpaket, debian-goodies)))
Analog zu `apt-file` arbeitet das Werkzeug `dglob` aus dem Paket
'debian-goodies' <<Debian-Paket-debian-goodies>>. Die Ausgabe ist
ähnlich kompakt wie von `apt-file`. Der Schalter `-f` dient dabei zur
Ausgabe der Dateien im angefragten Paket, was wir nachfolgend erneut
anhand des Pakets 'xterm' illustrieren.

.Ergebnis der Recherche zum Paket 'xterm'
----
$ dglob -f xterm
/etc/X11/app-defaults/UXTerm-color
/etc/X11/app-defaults/UXTerm
/etc/X11/app-defaults/KOI8RXTerm-color
/etc/X11/app-defaults/KOI8RXTerm
/etc/X11/app-defaults/XTerm-color
/etc/X11/app-defaults/XTerm
/usr/share/man/man1/lxterm.1.gz
...
$
----

// Stichworte für den Index
(((dglob, -a)))
(((dglob, -af)))
(((Debianpaket, dctrl-tools)))
(((Debianpaket, debian-goodies)))
(((grep-aptavail)))
Das Kommando `dglob` agiert üblicherweise nur auf den bereits
installierten Paketen. Mit dem Schalter `-a` weiten Sie Ihre Recherche
auf alle verfügbaren Pakete aus -- auch auf diejenigen, die noch nicht
installiert sind. Für diesen Schritt setzt `dglob` auf das Programm
`grep-aptavail` aus dem Paket 'dctrl-tools' <<Debian-Paket-dctrl-tools>>
auf. Nähere Informationen zu 'dctrl-tools' erfahren Sie unter
<<erweiterte-paketklassifikation-mit-debtags>>.

// Datei (Ende): ./werkzeuge/paketoperationen/paketinhalte-anzeigen-apt-file.adoc
