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