Pakete abfragen
Die Paketverwaltung kann weit mehr als nur installieren und entfernen. Mit gezielten Abfragen lassen sich Fragen beantworten wie: Welchem Paket gehört diese Datei? Was braucht dieses Paket? Welche Pakete hängen davon ab?
Dateityp identifizieren
Abschnitt betitelt „Dateityp identifizieren“Bevor man ein Paket sucht, lohnt ein Blick auf den Befehl selbst: Ist er kompiliert
oder ein Shell-Skript? Das file-Kommando verrät es:
which mtrfile /usr/sbin/mtr# /usr/sbin/mtr: ELF 64-bit LSB shared object, x86-64, dynamically linked ...
file /usr/sbin/ifcfg# /usr/sbin/ifcfg: POSIX shell script, ASCII text executableEin dynamisch gelinkes Binary (dynamically linked) hat Abhängigkeiten zu Bibliotheken
— es lässt sich nicht einfach auf ein anderes System kopieren. Ein Shell-Skript
hingegen ist oft portierbar, solange die verwendeten Befehle vorhanden sind.
Welchem Paket gehört eine Datei?
Abschnitt betitelt „Welchem Paket gehört eine Datei?“Der häufigste Anwendungsfall: eine Datei oder ein Befehl ist vorhanden — aber woher kommt sie?
rpm -qf /usr/bin/find# findutils-4.8.0-5.el9.x86_64
rpm -qf /etc/ssh/sshd_config# openssh-server-8.7p1-34.el9.x86_64Für Dateien, die noch nicht installiert sind (Suche im Repository):
dnf provides /usr/bin/finddnf provides "*/sshd_config" # Glob möglichdpkg -S /usr/bin/finddpkg -S /etc/ssh/sshd_config# openssh-server: /etc/ssh/sshd_configFür noch nicht installierte Pakete (benötigt apt-file):
sudo apt install apt-filesudo apt-file updateapt-file search /usr/bin/findapt-file search sshd_configrpm -qf /usr/bin/find # installierte Pakete (rpm-Backend)
zypper search --provides /usr/bin/findzypper what-provides /usr/bin/findDateien eines Pakets auflisten
Abschnitt betitelt „Dateien eines Pakets auflisten“Welche Dateien installiert ein bestimmtes Paket auf dem System?
rpm -ql nginx # installiertes Paketrpm -ql nginx | grep bin # nur ausführbare Dateien
# Noch nicht installiertes Paket aus dem Repository:dnf repoquery -l nginxdpkg -L nginx # installiertes Paketdpkg -L nginx | grep bin
# Noch nicht installiertes Paket:apt-file list nginxrpm -ql nginx # installiertes Paketzypper info --file-list nginxPaket-Metadaten anzeigen
Abschnitt betitelt „Paket-Metadaten anzeigen“Version, Beschreibung, Größe, Installationsdatum — all das steckt in den Paket-Metadaten:
rpm -qi nginx# Name : nginx# Version : 1.24.0# Release : 3.el9# Architecture: x86_64# Install Date: ...# Size : 1234567# Summary : A high performance web server ...
dnf info nginx # ähnlich, aber auch für nicht installierte PaketeChangelog eines Pakets anzeigen:
rpm -q --changelog nginx | head -30dnf repoquery --changelog nginxapt show nginxdpkg-query -s nginx # nur für installierte Paketezypper info nginxrpm -qi nginxAbhängigkeiten
Abschnitt betitelt „Abhängigkeiten“Was braucht ein Paket?
Abschnitt betitelt „Was braucht ein Paket?“rpm -q --requires nginxdnf repoquery --requires nginxdnf repoquery --requires --resolve nginx # aufgelöst als Paketnamenapt-cache depends nginxdpkg-query -s nginx | grep Dependszypper info --requires nginxrpm -q --requires nginxWelche Pakete hängen von einem Paket ab?
Abschnitt betitelt „Welche Pakete hängen von einem Paket ab?“Nützlich, bevor ein Paket entfernt wird — oder um zu verstehen, warum es nicht entfernt werden kann:
rpm -q --whatrequires openssl-libsdnf repoquery --whatrequires openssl-libsapt-cache rdepends libssl3apt-cache rdepends --installed libssl3 # nur installiertezypper search --requires opensslrpm -q --whatrequires libopenssl1_1Installationsverlauf
Abschnitt betitelt „Installationsverlauf“Zuletzt installierte Pakete
Abschnitt betitelt „Zuletzt installierte Pakete“rpm -qa --last # alle Pakete, neueste zuerstrpm -qa --last | head -20 # die letzten 20
dnf history # dnf-Transaktionendnf history info 5 # Details zu Transaktion #5dnf history undo 5 # Transaktion rückgängig machengrep " install " /var/log/dpkg.log | tail -20grep " install " /var/log/dpkg.log.1 >> /tmp/install.log # ältere Logs
cat /var/log/apt/history.log | tail -50rpm -qa --last | head -20zypper historyPaket-Integrität prüfen
Abschnitt betitelt „Paket-Integrität prüfen“Hat sich eine Datei eines installierten Pakets verändert? Nützlich bei Verdacht auf Manipulation oder fehlerhafte Konfiguration:
rpm -V nginx # Paket prüfenrpm -Va # alle Pakete prüfen (dauert lange)Ausgabe-Codes:
S — Dateigröße verändertM — Dateirechte verändert5 — MD5-Prüfsumme abweichendT — Zeitstempel verändertc — Konfigurationsdatei (Abweichungen sind normal)Ein leere Ausgabe bedeutet: alles in Ordnung.
sudo debsums nginx # benötigt: apt install debsumssudo debsums -s nginx # nur Fehler anzeigensudo debsums -a # alle Paketerpm -V nginxzypper verify nginxSkripte in einem Paket
Abschnitt betitelt „Skripte in einem Paket“RPM-Pakete können Shell-Skripte enthalten, die bei Installation oder Deinstallation
ausgeführt werden (%pre, %post, %preun, %postun):
rpm -q --scripts nginxAus welchem Repository stammt ein Paket?
Abschnitt betitelt „Aus welchem Repository stammt ein Paket?“Ein Kollege nutzt ein Tool, das im Standard-Repository nicht verfügbar ist. Woher hat er es?
dnf list hwinfo# Installed Packages# hwinfo.x86_64 21.47-9.el8 @epel
# Das @ vor dem Repository-Namen zeigt die Quelle# Alle installierten Pakete mit ihrer Quelle:dnf list installed | grep @epelRepository-Konfiguration anzeigen:
dnf repolist # aktive Repositoriesdnf repolist --all # alle (auch deaktivierte)dnf repoinfo epel # Details zu einem Repository# Aus welchem Repository/Pocket stammt ein Paket?apt-cache policy nginx# nginx:# Installed: 1.24.0-1# Candidate: 1.24.0-1# Version table:# *** 1.24.0-1 500# 500 http://deb.debian.org/debian bookworm/main amd64Repository-Liste anzeigen:
apt-cache policy # alle konfigurierten Repos mit Prioritätengrep -r "^deb " /etc/apt/sources.list /etc/apt/sources.list.d/zypper info hwinfo # zeigt "Repository" in der Ausgabe
zypper repos # alle konfigurierten Repositorieszypper repos --details # mit URLs und PrioritätenAlle installierten Pakete auflisten und filtern
Abschnitt betitelt „Alle installierten Pakete auflisten und filtern“# RHEL/Fedoradnf list installeddnf list installed | grep nginxrpm -qa | sort | less
# Debian/Ubuntuapt list --installeddpkg -l | grep nginxdpkg -l | grep "^ii" # nur vollständig installierte
# openSUSEzypper search --installed-onlyrpm -qa | sort