[[Vorlage(Getestet, noble, jammy)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal verwenden] [:apt/apt: Pakete mittels apt verwalten] }}} [[Inhaltsverzeichnis()]] Ab APT 2.0 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 mittels `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 ([packages: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 [man_de:apt-patterns:] {de}. Jeder davon kann mittels eines vorangestellten `!` [#Negierung negiert] werden. {{{#!vorlage tabelle Muster Bedeutung +++ `?broken` [[BR]] `~b` wählt Pakete aus, die kaputte Abhängigkeiten haben +++ `?config-files` [[BR]] `~c` wählt Pakete aus, die mit `remove` entfernt wurden und deren Konfigurationsdateien übriggeblieben sind +++ `?essential` [[BR]] `~E` wählt Pakete aus, in deren '''control'''-Datei ''„Essential: yes“'' gesetzt ist. +++ `?garbage` [[BR]] `~g` wählt Pakete aus, die automatisch entfernt werden können +++ `?installed` [[BR]] `~i` wählt Pakete aus, die bereits installiert sind +++ `?obsolete` [[BR]] `~o` wählt Pakete aus, die in keinen Depots mehr existieren +++ `?phasing` [[BR]] ab 24.04 wählt Pakete aus, die sich in der Phase der [:Aktualisierungen/phased_update:gestaffelten Aktualisierung] befinden +++ `?upgradable` [[BR]] `~U` wählt Pakete aus, bei denen ein Upgrade durchgeführt werden kann (wie `apt list --upgradeable`) +++ `?security` [[BR]] ab 24.04 wählt Pakete aus, die aus einem Repo für Sicherheitsaktualisierungen entstammen +++ `?origin(REGEX)` [[BR]] `~OREGEX` wählt Versionen aus, deren Ursprung auf den regulären Ausdruck passt. [[BR]] 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: {{{#!vorlage befehl apt list ?broken }}} == verbliebene Konfigurationsdateien == Wurden Pakete mit dem Kommando `remove` entfernt, verbleiben unter Umständen Konfigurationsdateien. {{{#!vorlage befehl 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: {{{#!vorlage befehl 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. {{{#!vorlage befehl apt list ?garbage }}} Diese Pakete können mit [:apt/apt-get#apt-get-autoremove:`autoremove`] entfernt werden. == installierte Pakete == Bereits installierte Pakete zeigt man sich an mit {{{#!vorlage befehl apt list ?installed }}} Das gleiche wie `apt list --installed`. Folgendermaßen ist eine Einengung auf ''manuell'' installierte Pakete möglich: {{{#!vorlage Befehl 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. {{{#!vorlage befehl 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 {{{#!vorlage befehl 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: {{{#!vorlage befehl 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. ## Evtl. kann das korrigiert werden mit `sudo apt-mark minimize-manual`. (?) == Ursprung PPA == So kann man sich auch die Liste anzeigen lassen, welche Pakete installiert sind und aus einem PPA stammen: {{{#!vorlage Befehl apt list "?installed ?origin(PPA)" }}} {{{#!vorlage befehl apt list "~i ~OPPA" # Kurzform }}} Auch die gewissermaßen umgekehrte Richtung ist möglich; Die von Ubuntu stammenden Pakete listet: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage befehl apt list '?upgradable !?phasing' }}} Eine Liste der ausschließlich über PPA, nicht jedoch von Ubuntu beziehbaren Pakete zeigt folgendes Kommando an: {{{#!vorlage Befehl apt list '~OPPA !~OUbuntu' }}} ## noch'n Bsp.? ## `?section`, `~s` ## `apt list '~sutils'` entspricht ## `grep-aptavail -F Section -s Package -n utils | sort` = Links = * [:APT:] {Übersicht} # tag: Paketverwaltung