So listen Sie installierte Pakete auf Ubuntu mit apt und dpkg-query auf
Unter Ubuntu verwenden Sie apt list --installed, wenn Sie eine lesbare Liste der installierten Pakete möchten, und verwenden Sie dpkg-query, wenn Sie eine genaue Statusprüfung oder eine strukturierte Ausgabe für ein Skript benötigen. Der beste Befehl hängt davon ab, ob Sie den Paketnamen kennen, das Paket identifizieren müssen, dem eine Datei gehört, oder ob Sie manuell und automatisch installierte Pakete trennen möchten.
Alle installierten Deb-Pakete auflisten
Um installierte Pakete zusammen mit ihren Versionen, Architekturen und Repositoriumsstatus anzuzeigen, führen Sie aus:
apt list --installed
Wenn die Liste lang ist, leiten Sie sie an less weiter. Sie können auch direkt ein Paketnamensmuster angeben.
apt list --installed | less
apt list --installed 'nginx*'
Der Befehl apt ist in erster Linie als interaktive Schnittstelle für Menschen konzipiert. Für Bestandsdateien, Vergleiche und Skripte ist dpkg-query normalerweise die bessere Wahl, da das Ausgabeformat explizit angegeben werden kann.
dpkg-query -W -f='${binary:Package}\t${Version}\t${Architecture}\n' | sort
Überprüfen, ob ein bestimmtes Paket installiert ist
Wenn Sie den genauen Paketnamen kennen
Der folgende Befehl zeigt den dpkg-Datenbankeintrag für nginx an. Ein Paket, das vollständig installiert ist, enthält normalerweise Status: install ok installed in der Ausgabe.
dpkg-query -s nginx
Um nur den aktuellen Status in kompakter Form auszugeben, fordern Sie das Statusfeld direkt an.
dpkg-query -W -f='${db:Status-Status}\n' nginx
Die erwartete Ausgabe für ein normal installiertes Paket ist installed. Wenn das Paket nicht in der lokalen Datenbank existiert, gibt der Befehl einen von null verschiedenen Exit-Status zurück. Skripte sollten den Exit-Status überprüfen, anstatt sich nur auf den angezeigten Text zu verlassen.
Wenn Sie nach ähnlichen Paketnamen suchen möchten
dpkg-query -l akzeptiert Shell-Wildcardmuster. Setzen Sie das Muster in Anführungszeichen, damit die Shell es nicht erweitert, bevor dpkg-query es erhält.
dpkg-query -l 'nginx*'
Die ersten drei Zeichen der Ausgabe beschreiben die gewünschte Aktion, den aktuellen Status und den Fehlerstatus. Die gängige Kombination ii bedeutet, dass die Installation gewünscht ist und das Paket derzeit installiert ist.
| Code | Bedeutung |
|---|---|
ii |
Das Paket ist zur Installation ausgewählt und derzeit korrekt installiert. |
rc |
Die Paketdateien wurden entfernt, aber die Konfigurationsdateien bleiben erhalten. |
iU |
Das Paket wurde entpackt, aber die Konfiguration wurde nicht abgeschlossen. |
| Großbuchstabenstatus | Das Paket könnte sich in einem unvollständigen oder stark inkonsistenten Zustand befinden. Überprüfen Sie den detaillierten Status und die Paketverwaltungsprotokolle. |
Überprüfen Sie die installierte Version und den Repository-Kandidaten
Nur die installierte Version anzeigen
dpkg-query -W -f='${binary:Package}\t${Version}\n' curl
Das binary:Package-Feld hängt, wenn nötig, einen Architekturqualifikator für ein Multi-Arch-Paket an. Es ist sicherer als das einfache Package-Feld, wenn Sie Versionen oder Inventare zwischen Systemen vergleichen.
Vergleichen Sie die installierten und vorgeschlagenen Versionen
apt-cache policy curl
Installed ist die derzeit auf dem System vorhandene Version, während Candidate die Version ist, die aus den aktivierten Repositories ausgewählt wurde. Repositoriums-Metadaten können veraltet sein, daher führen Sie sudo apt update aus, bevor Sie dieses Ergebnis verwenden, um zu entscheiden, ob ein Update verfügbar ist.
Finden Sie Dateien, die von einem Paket installiert wurden
Liste der für ein Paket erfassten Dateien
dpkg-query -L nginx
Dieser Befehl listet Dateien auf, die für das Paket in der dpkg-Datenbank erfasst wurden. Er umfasst nicht unbedingt Protokolle, Caches, Uploads, Datenbanken oder andere Dateien, die eine Anwendung nach der Installation erstellt.
Identifizieren Sie das Paket, dem eine Datei gehört
dpkg-query -S /usr/bin/curl
Wenn der Pfad ein symbolischer Link ist, überprüfen Sie auch das aufgelöste Ziel.
readlink -f /usr/bin/python3
dpkg-query -S "$(readlink -f /usr/bin/python3)"
dpkg-query -S durchsucht nur Datensätze für installierte Pakete. Um herauszufinden, welches Repository-Paket eine nicht installierte Datei bereitstellt, verwenden Sie ein separates indiziertes Suchwerkzeug wie apt-file.
Manuell und automatisch installierte Pakete trennen
APT zeichnet auf, ob ein Paket direkt ausgewählt oder automatisch als Abhängigkeit installiert wurde.
apt-mark showmanual
apt-mark showauto
Das showmanual-Ergebnis ist nicht einfach eine Historie von Anwendungen, die eine Person später installiert hat. Es kann auch Metapakete und Komponenten enthalten, die die ursprüngliche Ubuntu-Installation als manuell markiert hat. Schließen Sie nicht vom alleinigen Vorhandensein eines Pakets auf dessen Zweck oder Installationsgeschichte.
Eine automatisch installierte Abhängigkeit kann für autoremove in Frage kommen, wenn kein manuell installiertes Paket sie benötigt. Überprüfen Sie stets die vorgeschlagenen Änderungen, bevor Sie etwas entfernen.
sudo apt autoremove --dry-run
Speichern Sie ein Inventar der installierten Pakete in einer Datei
Zum Troubleshooting oder zum Vergleichen von Systemen speichern Sie den Paketnamen, die Version und die Architektur als tabulatorgetrennte Daten.
dpkg-query -W -f='${binary:Package}\t${Version}\t${Architecture}\n' \
| sort > installed-packages.tsv
Vergleichen Sie Inventare von zwei Systemen oder zwei Zeitpunkten mit:
diff -u installed-packages-before.tsv installed-packages-after.tsv
Diese Datei ist ein Inventar eines Systems zu einem bestimmten Zeitpunkt, keine vollständige Sicherung oder Wiederherstellungsmethode. Eine andere Ubuntu-Version bietet möglicherweise nicht dieselben Versionen, und Repository-Definitionen, Persönliche Paketarchive (PPAs), Snap-Pakete, lokale Konfigurationen und Anwendungsdaten müssen separat behandelt werden.
Unterscheiden Sie Deb- und Snap-Pakete
apt und dpkg-query prüfen Deb-Pakete. Anwendungen, die als Snaps installiert sind, erscheinen in einer separaten Liste.
snap list
Ein vollständiges Software-Inventar muss möglicherweise auch Container-Images, sprachspezifische Paketmanager, manuell installierte Programme und andere Bereitstellungsmethoden abdecken.
Befehlsübersicht nach Aufgabe
| Aufgabe | Empfohlener Befehl |
|---|---|
| Alle installierten Deb-Pakete auflisten | apt list --installed |
| Produzieren Sie strukturierte Namen und Versionen | dpkg-query -W -f='format' |
| Überprüfen Sie den Status eines bestimmten Pakets | dpkg-query -s PACKAGE |
| Vergleichen Sie installierte und verfügbare Versionen | apt-cache policy PACKAGE |
| Listen Sie Dateien auf, die von einem Paket installiert wurden | dpkg-query -L PACKAGE |
| Ermitteln Sie den Eigentümer einer Datei | dpkg-query -S FILE |
| Listen Sie Pakete auf, die als manuell markiert sind | apt-mark showmanual |
| Listen Sie installierte Snap-Pakete auf | snap list |
Wichtige Einschränkungen und Sicherheitsprüfungen
- Eine Suche mit
grepkann mehrere Pakete ergeben, die denselben Text in ihren Namen enthalten. Verwenden Siedpkg-query -soder-Wfür eine genaue Installationsüberprüfung. dpkg-query -lkann Pakete anzeigen, die entfernt wurden, deren Konfigurationsdateien aber noch vorhanden sind. Lesen Sie die Statusspalten, anstatt jede Zeile als installiert zu betrachten.- Eine Liste installierter Pakete sagt nicht aus, ob der zugehörige Dienst läuft. Überprüfen Sie einen Dienst separat mit dem zugehörigen Verwaltungstool, wie
systemctl status. - Bevor Sie ein Paket entfernen, prüfen Sie Abhängigkeiten, Metapakete und alle Betriebssystemfunktionen, die möglicherweise darauf angewiesen sind.




