19.7. Die installierten Pakete anzeigen

Wie bereits genannt, gliedern sich die Pakete aus Debian Backports recht nahtlos in den Paketbestand ein. Möchten Sie herausfinden, welche der installierten Pakete auf ihrem System aus den Backports stammen, kommt ihnen das Namens- und Versionsschema von Debian entgegen (siehe Benennung einer Paketdatei in Abschnitt 2.11, „Benennung einer Paketdatei“).

In der Versionsangabe des Pakets ist die Zeichenkette ~bpo plus die Versionsnummer der Debianveröffentlichung enthalten, so bspw. ~bpo8 für eine Rückportierung auf Debian 8 Jessie und ~bpo9 für eine Rückportierung auf Debian 9 Stretch. Diese Angabe ist soweit verlässlich, da sich die meisten Entwickler brav an diese Konvention für die Benennung halten. Zusätzlich achten die FTP-Master für Debian Backports recht pedantisch darauf, dass diese Schreibweise eingehalten wird.

Mit einem beherzten Griff zu dpkg, grep und awk filtern Sie aus der Paketliste alle Pakete samt Versionsnummer heraus, die diese Zeichenkette enthalten:

Auflisten der installierten Pakete samt Versionsnummer aus Debian Backports. 

$ dpkg -l | grep ~bpo8 | awk '{print $2 " " $3}'
libroutino-slim0 3.1.1-1~bpo8+1
libroutino0 3.1.1-1~bpo8+1
qmapshack 1.7.2-1~bpo8+1
routino 3.1.1-1~bpo8+1
routino-common 3.1.1-1~bpo8+1
$

Geht es Ihnen nur um die Paketnamen, vereinfacht sich der Aufruf wie folgt — Sie filtern mittels awk und einem Regulären Ausdruck und geben danach nur noch die zweite Spalte jeder Zeile aus:

Auflisten der installierten Pakete aus Debian Backports. 

$ dpkg -l | awk '/~bpo8/{print $2}'
libroutino-slim0
libroutino0
qmapshack
routino
routino-common
$

Das Risiko bei den beiden Varianten ist, dass Sie auch andere Pakete erwischen, die diese Zeichenkette in der Versionsnummer oder der Paketbeschreibung tragen. Zudem müssen Sie das bspw. in Skripten immer wieder an die von Ihnen verwendete Debianversion anpassen. Um diese Fallen zu umgehen, bestehen zwei weitere Lösungswege — a) mit Hilfe von aptitude und b) mit Hilfe von apt. Letzteres gelingt Ihnen erst ab Debian 8 Jessie, da es vorher apt nicht als Werkzeug in Debian gibt.

Die Variante a) mit aptitude kombiniert mehrere Aufrufparameter — so search ~i zur Suche in den installierten Paketen und dazu ?narrow() zur weiteren Eingrenzung der Auswahl. ~VCURRENT bezieht sich dabei auf die aktuelle Debianversion, ~Abackports auf die Pakete, die aus den Paketquellen (Archiv) kommen, in denen Backports im Archivnamen vorkommt.

Auflisten der installierten Pakete aus Debian Backports mittels aptitude

$ aptitude search '~i ?narrow(~VCURRENT, ~Abackports)'
i A libroutino-slim0                - Routino slim routing library
i A libroutino0                     - Routino routing library
i   qmapshack                       - GPS mapping (GeoTiff and vector) and GPSr
i A routino                         - Set of tools to find a path between two po
i A routino-common                  - Routino data
$

Nachteilig ist, dass aptitude etwas Zeit benötigt, um das Ergebnis zu ermitteln. aptitude baut intern erst alle möglichen Datenstrukturen auf, bevor es darauf herumrechnet. Von Vorteil ist, dass diese Variante unabhängig von einer Veröffentlichung funktioniert und somit auch gut mit älteren Debianvarianten nutzbar ist.

Die Variante b) auf der Basis von apt und fgrep liefert das gleiche Ergebnis, jedoch eine andere Ausgabe. Jede Zeile beinhaltet den Paketnamen samt Repository, aus dem Paket stammt, sowie die Versionsnummer, die Architektur und den Installationsstatus.

Auflisten der installierten Pakete aus Debian Backports mittels apt

$ apt list --installed | fgrep backports

WARNING: apt does not have a stable CLI interface yet. Use with caution in scripts.

libroutino-slim0/jessie-backports,now 3.1.1-1~bpo8+1 amd64 [Installiert,automatisch]
libroutino0/jessie-backports,now 3.1.1-1~bpo8+1 amd64 [Installiert,automatisch]
qmapshack/jessie-backports,now 1.7.2-1~bpo8+1 amd64  [installiert]
routino/jessie-backports,now 3.1.1-1~bpo8+1 amd64 [Installiert,automatisch]
routino-common/jessie-backports,now 3.1.1-1~bpo8+1 all [Installiert,automatisch]
$