apt-patterns
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Ubuntu 22.04 Jammy Jellyfish
Ubuntu 20.04 Focal Fossa
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'
Links¶