10.8. aptitude Format Strings

Mit Format Strings legen Sie die Ausgabe anhand von vorgegebenen Platzhaltern fest. Sie ähneln der Art und Weise, wie sie in der printf()-Funktion in der Programmiersprache C respektive der print()-Funktion in Python üblich sind. Eine ausführliche Beschreibung der Platzhalter finden Sie im aptitude-Handbuch unter Customizing the package list [aptitude-dokumentation-package-list].

Tabelle 10.1, „Format Strings in aptitude gibt Ihnen eine Übersicht zu den verfügbaren Platzhaltern. Diese Platzhalter helfen Ihnen in Kombination mit der Suche nach Paketen und bei der Gestaltung der Ausgabe. Sie bestimmen damit, welche Informationen aptitude spaltenweise zu einem Paket darstellt.

Tabelle 10.1. Format Strings in aptitude

Platzhalter Bedeutung

%a

das Flag für die Aktion des Pakets (Action Flag)

%A

die ausführlichere Beschreibung des Flags der Aktion

%B

die Anzahl der kaputten Pakete (Broken Packages)

%c

der aktuelle Paketstatus (Current State Flag)

%C

eine ausführlichere Beschreibung des aktuellen Paketstatus

%d

die kurze Paketbeschreibung (Description)

%D

die Größe der Paketdatei

%E

der Name des Source-Pakets

%H

der Name des Rechners, auf dem aptitude gerade ausgeführt wird (Hostname)

%i

benennt die höchste Priorität, die einer Paketversion zugewiesen wurde

%I

die (geschätzte) Installationsgröße (Installed Size)

%m

der Name des Paketmaintainers (Maintainer)

%M

gesetzt, falls das Paket automatisch installiert wurde (Automatic Flag)

%n

gibt die Programmversion von aptitude aus

%N

gibt den Namen des Programms aus, i.d.R aptitude

%o

gibt eine Schätzung der Datenmenge zurück, die vom Repository bezogen wird

%p

der Paketname (Package Name)

%P

die Paketpriorität (Priority)

%r

gibt die geschätzte Anzahl Pakete an, die von diesem Paket abhängen (Reverse Depends Count)

%R

eine Abkürzung für die Priorität des Paketes (Abbreviated Priority)

%s

der Bereich, in den das Paket eingeordnet ist (Section)

%S

der Vertrauensstatus des Paketes; ist U, falls es nicht aus einer vertrauenswürdigen Quelle stammt

%t

der Name des Archivs, aus dem das Paket stammt

%T

gibt einen * zurück, falls das Paket getagged wurde, ansonsten nichts

%u

falls die anstehenden Aktionen die Größe des verfügbaren Speicherplatzes auf dem Datenträger verändern, gibt dieser Platz eine entsprechende Mitteilung aus

%v

die aktuell installierte Version des Pakets, falls installiert (Version)

%V

gibt die Paketversion aus, die installiert würde, falls die Aktion Paket installieren ausgeführt wird (Candidate Version)

%Z

die Größe des Speicherplatzes, der zusätzlich benutzt oder freigegeben wird, wenn das Paket installiert, entfernt oder aktualisiert wird (Size Change)


Die Voreinstellung von aptitude beinhaltet die fünf Platzhalter %c, %a, %M, %p% und %d. Es umfasst somit die einzelnen Spalten mit dem Paketstatus, der Aktion, das Automatic Flag, dem Paketnamen und der Paketbeschreibung.

Möchten Sie eine andere Ausgabe erhalten, benutzen Sie im Aufruf den Schalter -F (Langform --display-format) gefolgt von einem String mit den entsprechenden Platzhaltern. Das nachfolgende Beispiel listet alle verfügbaren Pakete samt deren Installationsstatus (%c) auf, in dessen Paketname die Zeichenkette asciidoc' enthalten ist (%p`). Zwischen dem Paketstatus und dem Paketnamen wird lediglich ein Leerzeichen eingefügt.

Individuelle Gestaltung des Ausgabeformats von aptitude bei der Suche nach den verfügbaren Paketen mit asciidoc im Namen. 

$ aptitude search -F '%c %p' asciidoc
i asciidoc
v asciidoc:i386
i asciidoctor
i asciidoctor-doc
$

Die Format Strings erlaubt ebenfalls zusätzliche Trennzeichen und dezimale Angaben vor einem Platzhalter. Damit legen Sie die weitere Gestaltung der Ausgabe und die jeweilige Spaltenbreite fest. Das nachfolgende Beispiel legt drei Spalten fest — den Installationsstatus (%c), die Versionsnummer, falls das Paket installiert ist (%v) sowie den Paketnamen (%p). Alle drei Spalten sind jeweils durch einen senkrechten Strich voneinander getrennt. Die Angabe %20v besimmt als feste Spaltenbreite 20 Zeichen, die anderen Spalten bleiben in der Größe variabel.

Installationsstatus, installierte Version und Paketname mit fester Breite. 

$ aptitude search -F '%c | %20v | %p' asciidoc
i | 8.6.9-3              | asciidoc
v | <keine>              | asciidoc:i386
i | 1.5.4-1~bpo8+1       | asciidoctor
i | 0.1.4-3              | asciidoctor-doc
$

In der Praxis ist es oft so, dass weitere Schalter im Aufruf miteinander zu kombinieren sind. Das nachfolgende Beispiel listet nur den Namen aller verfügbaren Pakete auf, die nicht als Abhängigkeiten installiert wurden. Dabei bewirkt die Angabe '~i !~M' , dass nur die installierten Pakete berücksichtigt werden (Angabe '~i'), und '!~M' , dass nur die einbezogen werden, bei denen das Automatic Flag nicht gesetzt ist (das ! bewirkt eine Negation).

Das Ergebnis ist zunächst erstmal der komplette, übliche Ausgabestring aus Paketstatus, der Aktion, dem Automatic Flag, dem Paketnamen und der kurzen Paketbeschreibung. Um das noch auf den Paketnamen zu reduzieren, kommt der Format String %p ins Spiel.

Lediglich nicht automatisch installierte Pakete auflisten. 

$ aptitude search '~i !~M' -F '%p'
abiword
abs-guide
ack-grep
acl
acpi
acpi-support-base
acpid
acpitool
adduser
adequate
...
$

Die obige Liste beinhaltet auch alle essentiellen Pakete (siehe Abschnitt 2.13, „Paket-Priorität und essentielle Pakete“). Diese filtern Sie über die zusätzliche Angabe '!~E' heraus. Damit ändert sich ihr Aufruf wie folgt:

Nicht automatisch installierte und nicht essentielle Pakete auflisten. 

$ aptitude search '~i !~M' -F '%p'
abiword
abs-guide
ack-grep
...
$

Anmerkung

Bitte beachten Sie, dass aptitude nur die Pakete berücksichtigt, die auch das Automatic Flag tragen. Nicht alle Distributionen sind da konsequent. Zum Beispiel ist Raspberry Pi OS dafür bekannt, die Markierung kaum zu benutzen. Obiger Aufruf auf einem Raspberry Pi liefert wohl deswegen auch viele C-Bibliotheken im Ergebnis mit, die tatsächlicht nicht gebraucht werden.

Geht es Ihnen jedoch darum, lediglich die Namen der Pakete auszugeben, die den Begriff asciidoc im Namen tragen und auch installiert sind, hilft aus unserer Sicht nur die Kombination aus asciidoc und grep wie folgt weiter:

Alle installierten Pakete auflisten, die asciidoc im Namen tragen. 

$ aptitude search '~i' -F '%p' | grep asciidoc
asciidoc
asciidoctor
asciidoctor-doc
$

Arbeiten Sie mit Repositorys vom Fremdanbietern, hängt die Zuverlässigkeit der Pakete vom Fremdanbieter ab. Mit dem nachfolgenden Aufruf — einer Kombination aus aptitude und egrep — finden Sie alle installierten Pakete, die aus nicht-vertrauenswürdigen Quellen stammen. Die Angabe %S am Beginn des Format Strings veranlasst aptitude, ein U zu produzieren, sollte der entsprechende Fall eintreten. Der angeflanschte Aufruf von egrep benutzt einen regulären Ausdruck, um für diejenigen Zeilen einen Treffer zu landen, die mit einem großen U beginnen. Im Beispiel ist es das ausgedachte Paket libblafaselsonstwas.

Pakete aus nicht-vertrauenswürdiger Quelle herausfischen. 

$ aptitude search '~i' -F '%S %p' | egrep "^U
U libblafaselsonstwas
$