Häufig ist Ihnen nur der Dateiname bekannt, aber nicht das Paket, aus
dem diese Datei stammt. Das wird insofern spannend, wenn das Paket
anders als die gesuchte Datei heißt. Es gibt derzeit fünf Möglichkeiten,
diese Zuordnung zu ermitteln – einerseits über dpkg
, dpkg-query
oder
dlocate
[Debian-Paket-dlocate] mit deren Option -S Muster
,
andererseits mittels apt-file
und dessen Option search Muster
und
fünftens über die Webseite des Debian-Projekts. aptitude
verfügt nicht
über einen solchen Schalter zur Suche.
Die vier Kommandos finden alle Pfade, in denen das angegebene „Muster“
vorkommt. Der Unterschied zwischen den vier Programmen besteht darin,
dass dpkg
, dpkg-query
und dlocate
nur in bereits installierten
Paketen suchen, apt-file
hingegen hingegen in allen verfügbaren
Paketen, d.h. unabhängig davon, ob diese bereits auf ihrem System
installiert sind oder nicht. Verfügbare Pakete bezeichnet die Menge von
Paketen, die APT über einen Eintrag in der Liste der Paketquellen in der
Datei /etc/apt/sources.list
und aus der dazugehörigen Paketliste
entnehmen kann (siehe dazu Abschnitt 3.1, „Paketquellen“). Pakete, die sich hingegen
in Paketquellen befinden, die nicht in obiger Liste referenziert sind,
kann apt-file
nicht untersuchen.
Bei der Suche über die Webseite bildet zunächst der gesamte Paketbestand aller Veröffentlichungen die Grundlage. Sie können das jederzeit entsprechend über die Auswahlfelder zur Veröffentlichung oder Architektur einschränken.
Dafür genügen der Aufruf dpkg -S Muster
, dpkg-query -S Muster
oder
die flinke Abkürzung dlocate Muster
. Zur Suche ist bei dlocate
der
Schalter -S
optional, dpkg
und dpkg-query
kennen hingegen dafür die
Langform --search
. Das Textfragment oder Muster beschreibt, wonach die
Programme in der Dateiliste der installierten Pakete suchen sollen.
Beginnt das Textfragment mit einem /
, wird die Zeichenkette als
absoluter Pfad interpretiert. Nachfolgendes Beispiel illustriert den
Aufruf nach dem Muster bsod.
mittels dpkg
in allen installierten
Paketen.
Suche nach dem Muster bsod.
mittels dpkg
.
$ dpkg -S bsod. xscreensaver-screensaver-bsod: /usr/share/applications/screensavers/bsod.desktop xscreensaver-screensaver-bsod: /usr/share/man/man6/bsod.6x.gz xscreensaver-screensaver-bsod: /usr/share/xscreensaver/config/bsod.xml $
dlocate
liefert im Allgemeinen ein identisches Ergebnis zu dpkg
bzw.
dpkg-query
. Da dlocate
zur Suche auf grep
zurückgreift, hat es
mitunter eine höhere Trefferrate. Nachfolgendes Beispiel zeigt die Suche
nach dem absoluten Pfad /bsod.
– sowohl für dpkg
, als auch zu
dlocate
im Vergleich.
Suche nach der Pfadangabe /bsod.
$ dpkg -S /bsod. dpkg-query: Kein Pfad gefunden, der auf Muster /bsod. passt $ dlocate -S /bsod. xscreensaver-screensaver-bsod: /usr/share/applications/screensavers/bsod.desktop xscreensaver-screensaver-bsod: /usr/share/man/man6/bsod.6x.gz xscreensaver-screensaver-bsod: /usr/share/xscreensaver/config/bsod.xml $
Dafür gibt es das Werkzeug apt-file
aus dem gleichnamigen
Debian-Paket. Grundlage seiner Aktivitäten ist die Liste der
Paketquellen in /etc/apt/sources.list/
und die Liste der Dateien in
jedem der Pakete, die von dort bezogen werden. Diese Inhaltslisten haben
typischerweise einen Dateinamen der Form
Contents-<Architektur>.<Kompressions-Suffix>
und sind selbst
komprimiert bis zu 50 MB groß. Seit apt-file
Version 3.0 aufwärts
werden diese bei einer Aktualisierung der Paketlisten (z.B. mittels apt
update
) automatisch mitheruntergeladen und wie die normalen Paketlisten
im Verzeichnis /var/lib/apt/lists/
abgespeichert. (Ist apt-file
hingegen nicht installiert, so lädt apt update
diese Inhaltslisten
auch nicht herunter.)
Liste der Paketinhaltslisten anzeigen (apt-file
Version 3.0 aufwärts).
$ ls /var/lib/apt/lists/*Contents* /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye_contrib_Contents-amd64.lz4 /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye_main_Contents-amd64.lz4 /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye_non-free_Contents-amd64.lz4 /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye-secrutiy_main_Contents-amd64.diff_Index /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye-security_main_Contents-amd64.lz4 /var/lib/apt/lists/debian.ethz.ch_debian_dists_bullseye-security_non-free_Contents-amd64.lz4 $
apt-file
Version 3.0 und höher ist seit Debian 9 Stretch mit dabei.
Bei älteren Version von apt-file
, wie z.B. auf Debian 8 Jessie und
früher musste man diese Paketinhaltslisten mittels apt-file update
stets manuell aktualisieren. Außerdem sie wurden auch in einem anderen
Verzeichnis abgespeichert, nämlich in /var/lib/apt/lists/
.
apt-file
verfügt über eine ganze Reihe von Unterkommandos und
Schaltern, von denen wir Ihnen die wichtigsten vorstellen. Weitere
Schalter entnehmen Sie bitte der Manpage zum Programm.
search Suchmuster
Suchmuster
angegebene Datei
enthalten ist. Ergebnis ist eine Liste aller Pakete, die das angegebene
Suchmuster
enthalten. apt-file
sucht dabei nur nach Dateinamen, nicht
jedoch nach Verzeichnisnamen.
find Suchmuster
search
.
list Paketname
dpkg -L
, nur das hier die Pakete noch nicht
installiert sein müssen.
show Paketname
list
.
-a
(Langform --architecture
)
-D
(Langform --from-deb
)
.deb
-Datei. Nützlich, um nach Dateikonflikten mit anderen Paketen zu
suchen.
-f
(Langform --from-file
)
-i
(Langform --ignore-case
)
-l
(Langform --package-only
)
-v
(Langform --verbose
)
apt-file
an, wo es
seine Informationen herholt und wonach es genau sucht. Die Ausgabe ist
spätestens seit Version 3.0 sehr verbos und eigentlich nur noch zum
Debuggen gedacht, aber dennoch nützlich.
-x
(Langform --regexp
)
apt-file
das Suchmuster
als schlichte Zeichenkette auf.
Etwas nachteilig an apt-file
ist, dass es in der Standardeinstellung
alle Paketquellen durchsucht und Ihnen dabei nicht anzeigt, in welcher
davon es den Treffer gefunden hat. Das führt zu Verwirrung, bspw. wenn
in der Liste der Paketquellen die Veröffentlichungen stable und
stable-backports eingetragen sind. apt-file
verfügt bislang nicht
über einen Schalter, um die Ausgabe dementsprechend zu beeinflussen.
Um mit apt-file
arbeiten zu können, müssen nach der Installation des
Paketes mindestens einmal die Paketinhaltslisten aktualisiert werden.
Das nehmen Sie entweder mittels apt-file update
vor, oder indem Sie
die Paketlisten aktualisieren — z.B. mittels apt update
oder apt-get
update
. Bei Versionen von apt-file
vor Version 3.0 geht dies noch
nicht automatisch und nur mittels apt-file update
.
Unterbleibt dieser Schritt, quittiert apt-file
einen Aufruf zur Suche
mit der Fehlermeldung »The cache is empty. You need to run "apt-file
update" first.« (auf Deutsch: »Der Cache ist leer. Sie zuerst müssen
"apt-file update" aufrufen.«)
Das nachfolgende Beispiel zeigt die Suche nach der Zeichenkette fping
.
Suche über die Strukturdatenbank mittels apt-file
.
$ apt-file search fping cacti: /usr/share/cacti/site/scripts/ss_fping.php fping: /usr/bin/fping fping: /usr/bin/fping6 fping: /usr/share/bug/fping fping: /usr/share/doc/fping/NEWS.Debian.gz fping: /usr/share/doc/fping/changelog.Debian.gz fping: /usr/share/doc/fping/changelog.gz fping: /usr/share/doc/fping/copyright fping: /usr/share/lintian/overrides/fping fping: /usr/share/man/man8/fping.8.gz fping: /usr/share/man/man8/fping6.8.gz icingaweb2-module-graphite: /usr/share/icingaweb2/modules/graphite/templates/fping.ini mon: /usr/lib/mon/mon.d/fping.monitor monitoring-plugins-standard: /usr/lib/nagios/plugins/check_fping monitoring-plugins-standard: /usr/share/monitoring-plugins/templates-standard/fping.cfg netdata-core: /usr/lib/netdata/conf.d/health.d/fping.conf netdata-plugins-bash: /usr/lib/netdata/conf.d/fping.conf netdata-plugins-bash: /usr/lib/netdata/plugins.d/fping.plugin python3-nova: /usr/lib/python3/dist-packages/nova/api/openstack/compute/fping.py python3-nova: /usr/lib/python3/dist-packages/nova/tests/functional/api_sample_tests/test_fping.py smokeping: /usr/share/doc/smokeping/examples/config.fping-instances.gz $
Die Webseite bietet ebenfalls eine Suche anhand einer Zeichenfolge an
(siehe Abbildung 8.21, „Suche nach mupdf
über die Webseite“). Über verschiedene Auswahlfelder grenzen
Sie ein, ob die Zeichenfolge auf feste Verzeichnisse passen soll, die
mit einem Suchwort enden, oder Pakete mit Dateien beinhalten soll, die so
benannt sind oder deren Namen das Suchwort enthalten. Desweiteren
filtern Sie die Suchergebnisse nach der gewünschten Veröffentlichung und
Architektur (siehe dazu Abschnitt 2.10, „Veröffentlichungen“ und
Abschnitt 1.2, „Debian-Architekturen“).
Die Abbildung 8.22, „Suche nach der Zeichenkette mupdf über die Webseite des Debian-Projekts (Suchergebnis)“ zeigt das Suchergebnis für die Veröffentlichung Bullseye, welches hier recht lang ausfällt. Die Treffer zeigen das Paket mupdf samt der dazu gefundenen Dateien mit dem Suchmuster. Klicken Sie auf einen der Links zwischen dem Suchfeld und dem Suchergebnis, schränken Sie die Suche anhand der gewählten Veröffentlichung bzw. Architektur weiter ein.
Abbildung 8.22. Suche nach der Zeichenkette mupdf über die Webseite des Debian-Projekts (Suchergebnis)