ubuntuusers.de

apt-patterns

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Ab APT 2.0 bzw. ab Ubuntu 20.04 unterstützt APT auch vordefinierte Begriffe bzw. Muster, um den Paketlisten-Cache zu durchsuchen.

Eine Warnung vorweg: Nicht alle Muster funktionieren wie erwartet. Es ist daher immer ratsam, diese zunächst mit einem harmlosen Befehl zu testen oder auf einem Bastelsystem auszuführen. Je neuer die Ubuntuversion, desto ausgereifter verhält es sich jedoch.

Über die Muster können vorwiegend mittles apt list … Pakete angezeigt werden. Teilweise können sie auch mit apt remove … oder apt install … direkt angewendet werden. Das Kommando apt search … scheint die Muster nicht zu verstehen.

Installation

Apt-patterns ist eine in den APT-Paketmanager (apt) integrierte Funktionalität und damit Teil der Standardinstallation.

Übersicht

Hier werden ein paar dieser Begriffe genannt, die in den folgenden Beispielen verwendet werden. Ein vollständige Liste findet man in der Manpage apt-patterns 🇩🇪. Jeder davon kann mittels eines vorangestellten ! negiert werden.

Muster Bedeutung
?broken
~b
wählt Pakete aus, die kaputte Abhängigkeiten haben
?config-files
~c
wählt Pakete aus, die mit remove entfernt wurden und deren Konfigurationsdateien übriggeblieben sind
?essential
~E
wählt Pakete aus, in deren control-Datei „Essential: yes“ gesetzt ist.
?garbage
~g
wählt Pakete aus, die automatisch entfernt werden können
?installed
~i
wählt Pakete aus, die bereits installiert sind
?obsolete
~o
wählt Pakete aus, die in keinen Depots mehr existieren
?phasing
ab 24.04
wählt Pakete aus, die sich in der Phase der gestaffelten Aktualisierung befinden
?upgradable
~U
wählt Pakete aus, bei denen ein Upgrade durchgeführt werden kann (wie apt list --upgradeable)
?security
ab 24.04
wählt Pakete aus, die aus einem Repo für Sicherheitsaktualisierungen entstammen
?origin(REGEX)
~OREGEX
wählt Versionen aus, deren Ursprung auf den regulären Ausdruck passt.
Ursprung bedeutet hier, die Werte nach o= in apt-cache policy.

Beispiele

Nachfolgend einige interessante Fälle wie man in einem Terminal[1] mit apt[2] die genannten Muster anwenden kann.

kaputte Abhängigkeiten

Eine Liste der Pakete mit kaputten Abhängigkeiten – sofern vorhanden – kann man sich anzeigen lassen mit:

apt list ?broken 

verbliebene Konfigurationsdateien

Wurden Pakete mit dem Kommando remove entfernt, verbleiben unter Umständen Konfigurationsdateien.

apt list ?config-files 

Diese Pakete musste man früher mit dpkg -l | grep ^rc anzeigen lassen.

Essentielle Pakete

Es gibt einige essentielle Pakete, bei deren Entfernung ausdrücklich gewarnt wird. Möchte man genauer wissen, welche Paket darunter fallen, so kann man sie sich jetzt anzeigen lassen:

apt list ?essential 

Eine beinahe identische Liste konnte bislang über grep-aptavail -F Essential -s Package -n yes gefunden werden.

nicht mehr benötigte Abhängigkeiten

Pakete, die als Abhängigkeit mit einem anderen Paket installiert wurden, für deren Verbleib im System es mittlerweile jedoch keinen Grund mehr gibt.

apt list ?garbage 

Diese Pakete können mit autoremove entfernt werden.

installierte Pakete

Bereits installierte Pakete zeigt man sich an mit

apt list ?installed 

Das gleiche wie apt list --installed. Folgendermaßen ist eine Einengung auf manuell installierte Pakete möglich:

apt list '~i !~M' 

obsolete Pakete

Obsolete Pakete können einzelne, lokal installierte Pakete sein wie z. B. Treiber für Drucker bzw. Scanner oder eine Anwendung, die über die Paketverwaltung nicht verfügbar war. Andererseits könnten sie von einem Upgrade einer Ubuntuversion auf eine höhere aus der niederen Version übriggeblieben sein. Im letzteren Fall sollte man ein manuelles Aufräumen in Erwägung ziehen.

apt list ?obsolete 

Dieses Muster nie ungeprüft mit remove o. ä. anwenden, da wie bereits erwähnt auch Treiber und gewünschte Programme damit gefunden werden können.

gestaffelte Aktualisierung

Die Pakete einer ausstehenden, gestaffelten Aktualisierung befinden

apt list ?phasing 

ausstehende Sicherheitsaktualisierungen

Für ausstehende Sicherheitsaktualisierungen muss man die Schnittmenge der verfügbaren Aktualisierungen (?upgradable) und aller Sicherheitsaktualisierungen (?security) bilden, d. h. beide Muster gleichzeitig übergeben:

apt list "?upgradable ?security" 

Da man mit apt upgrade keine Liste von Programmen übergeben kann, wird immer die normalen Regel für upgrade angewendet. Sollte man auf die Idee kommen, die ausstehenden Sicherheitsaktualisierungen mit sudo apt install "?upgradable ?security" zu installieren, sollte man im Hinterkopf haben, dass dabei auch die als automatisch installierten Pakete als nun „manuell installiert“ markiert werden. Ein automatisches Entfernen nicht mehr benötigter Abhängigkeiten wird dadurch deutlich erschwert, je länger man diese Methode anwendet.

Ursprung PPA

So kann man sich auch die Liste anzeigen lassen, welche Pakete installiert sind und aus einem PPA stammen:

apt list "?installed ?origin(PPA)" 
apt list "~i ~OPPA"  # Kurzform 

Auch die gewissermaßen umgekehrte Richtung ist möglich; Die von Ubuntu stammenden Pakete listet:

apt list "?installed ?origin(Ubuntu)" 

Bei der umfassenden Ausgabe ist allerdings zu beachten, dass natürlich auch die Pakete aufgelistet werden, die ebenfalls in einem PPA oder Fremdquelle erhältlich sind. Getreu den Regel wird auch die Versionsnummer angezeigt, die tatsächlich installiert würde (oder ist), was im allgemeinen die Version aus der Fremdquelle sein dürfte. Dies kann man leicht an der Schnittmenge überprüfen:

apt list "?origin(PPA) ?origin(Ubuntu)" 

Negierung

Man kann auch von einer Liste die Anzeige aller Pakete ausschließen, die einem anderen Muster entsprechen. Oben findet sich bereits ein Beispiel für die manuell installierten Pakete. Das negierende Ausrufezeichen muss zwingend in Hochkommata (single quotes) eingefasst werden.

Möchte man sich die aktualisierbaren Pakete anzeigen, die jedoch nicht in der Phase der gestaffelten Aktualisierungen verweilen, verwendet man:

apt list '?upgradable !?phasing' 

Eine Liste der ausschließlich über PPA, nicht jedoch von Ubuntu beziehbaren Pakete zeigt folgendes Kommando an:

apt list '~OPPA !~OUbuntu' 

Diese Revision wurde am 25. Januar 2025 12:11 von Ruth-Wies erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Paketverwaltung