VMware ESXi and vSphere Cluster Management
Paketverwaltung mit RPM unter Linux
Lerne, wie du RPM-Pakete unter Linux installierst, aktualisierst, abfragst, auf Integrität prüfst und entfernst. Mit Befehlen, Beispielen und Fehlersuche.
RPM ist ein Paketformat und zugleich ein Kommandozeilenwerkzeug zur Verwaltung von Softwarepaketen auf vielen RPM-basierten Linux-Systemen. Dieses Kapitel zeigt, wie du lokale RPM-Dateien installierst, Paketinformationen abfragst, Integrität prüfst, Pakete aktualisierst und Software entfernst.
Vorausgesetzt werden grundlegende Kenntnisse der Linux-Kommandozeile, von Datei- und Pfadangaben sowie von sudo. Paketabfragen funktionieren häufig ohne Root-Rechte. Vorgänge, die die Installation oder Entfernung verändern, benötigen dagegen normalerweise administrative Rechte.
Einordnung von RPM
Ein Paket bündelt Softwaredateien, Metadaten und Angaben zu benötigten Abhängigkeiten. RPM steht ursprünglich für „RPM Package Manager“. Das Werkzeug rpm arbeitet direkt mit einzelnen lokalen Paketdateien und der lokalen RPM-Datenbank.
Typische RPM-basierte Distributionen sind Red Hat Enterprise Linux, Fedora, CentOS Stream, SUSE Linux Enterprise und openSUSE.
Die RPM-Datenbank enthält unter anderem installierte Paketnamen, Versionen, Architekturen, Dateien und Paketmetadaten. Befehle wie rpm -q lesen diese Datenbank aus. Installation, Aktualisierung und Entfernung verändern sie und erfordern deshalb in der Regel sudo.
RPM-Datei und installierter Paketname
Eine Datei mit der Endung .rpm ist ein lokales Paket auf dem Dateisystem. Ein bereits installiertes Paket wird dagegen über seinen Paketnamen in der RPM-Datenbank angesprochen.
Beispiel:
./kdessh-4.3.5-0.3.3.x86_64.rpmDer Pfad bezeichnet eine Datei. Für Abfragen und die Entfernung verwendest du normalerweise den installierten Namen:
rpm -q kdessh
sudo rpm -e kdesshDer vollständige Dateiname ist daher nicht zwingend die Eingabe für -e. Je nach Bedarf reichen Paketname oder eine vollständige Name-Version-Release-Kennung.
Aufbau eines RPM-Dateinamens
Das allgemeine Schema lautet:
paketname-version-release.architektur.rpmAm Beispiel kdessh-4.3.5-0.3.3.x86_64.rpm liest du also:
- Paketname:
kdessh - Version:
4.3.5 - Release:
0.3.3 - Architektur:
x86_64
Häufige Architekturwerte sind x86_64 für 64-Bit-x86-Systeme, aarch64 für 64-Bit-ARM-Systeme, i686 für 32-Bit-x86-Systeme und noarch für architekturunabhängige Inhalte, etwa viele Skript- oder Dokumentationspakete.
Für eine vollständigere Paketkennung wird außerdem häufig NEVRA verwendet: Name, Epoch, Version, Release und Architektur. Die Epoch ist ein zusätzlicher Vergleichswert, der nicht immer im sichtbaren Dateinamen auftaucht.
Zentrale rpm-Optionen
Optionen lassen sich kombinieren. Die häufige Form -ivh bedeutet Installation mit ausführlicher Ausgabe und Fortschrittsanzeige. Der Kontext entscheidet, ob du einen Dateipfad oder einen installierten Paketnamen angibst: -i, -U und -K arbeiten typischerweise mit einer Datei; -q und -e beziehen sich meist auf die RPM-Datenbank.
Eine lokale RPM-Datei vor der Installation prüfen
Prüfe vor der Installation, ob die Datei existiert, die Architektur passt und die Paketinformationen plausibel sind. Metadaten einer noch nicht installierten Datei liest du mit -qpi:
rpm -qpi ./kdessh-4.3.5-0.3.3.x86_64.rpmDie Ausgabe enthält unter anderem Name, Version, Release, Architektur, Beschreibung und Abhängigkeiten. Die Systemarchitektur kannst du beispielsweise so anzeigen:
uname -mZusätzlich solltest du die Signatur und Integrität prüfen:
rpm -K ./kdessh-4.3.5-0.3.3.x86_64.rpmLokale RPM-Dateien installieren
Eine lokale Datei installierst du mit -i. Für ausführliche Ausgabe und Fortschrittsanzeige wird häufig -ivh verwendet:
sudo rpm -ivh ./kdessh-4.3.5-0.3.3.x86_64.rpmrpm prüft dabei unter anderem Paketname, Version, Architektur und Abhängigkeiten. Fehlende Abhängigkeiten werden gemeldet, aber nicht selbstständig aus einem Repository heruntergeladen. Eine solche Installation kann deshalb abbrechen, obwohl die RPM-Datei an sich korrekt ist.
Wenn die Distribution dnf verwendet und Abhängigkeiten aus konfigurierten Repositorys auflösen soll, ist meist dieser Weg geeigneter:
sudo dnf install ./kdessh-4.3.5-0.3.3.x86_64.rpmAuf SUSE-Systemen kann der entsprechende Vorgang mit zypper erfolgen:
sudo zypper install ./kdessh-4.3.5-0.3.3.x86_64.rpmPakete aktualisieren und ersetzen
Mit -U aktualisierst du ein Paket aus einer lokalen Datei:
sudo rpm -Uvh ./kdessh-4.3.6-0.3.4.x86_64.rpm-U steht für Upgrade. Ist noch keine Version installiert, kann dieser Modus das Paket auch erstmals installieren. Das unterscheidet ihn von -i: Eine Installation mit -i kann scheitern, wenn bereits eine passende Version vorhanden ist, während -U typischerweise eine ältere Version ersetzt.
Bei Downgrades, Paketwechseln oder Software mit vielen Abhängigkeiten solltest du den distributionsüblichen Paketmanager bevorzugen. Er kann die geplante Transaktion besser bewerten und passende Paketversionen aus Repositorys auswählen.
Installierte Pakete abfragen
Ein bestimmtes Paket finden
Mit -q stellst du fest, ob ein Paket installiert ist:
rpm -q kdesshBei Erfolg wird die installierte Paketkennung ausgegeben. Eine ausführliche Beschreibung erhältst du mit:
rpm -qi kdesshTypische Felder sind Name, Version, Release, Architektur, Installationsdatum, Größe, Signatur und Beschreibung.
Alle installierten Pakete auflisten
rpm -qaDie Ausgabe kann sehr lang sein. Für eine Suche wird sie oft mit einem weiteren Kommando kombiniert, beispielsweise:
rpm -qa | grep -i sshDateien und Paketbesitzer ermitteln
Welche Dateien ein installiertes Paket bereitstellt, zeigt -ql:
rpm -ql kdesshWelches installierte Paket eine bestimmte Datei besitzt, ermittelst du mit -qf:
rpm -qf /usr/bin/beispielprogrammDas ist hilfreich, wenn du herausfinden möchtest, aus welchem Paket ein Programm, eine Bibliothek oder eine Konfigurationsdatei stammt.
Paketintegrität und Signaturen
Installierte Dateien prüfen
rpm -V vergleicht Dateien eines installierten Pakets mit den in der RPM-Datenbank gespeicherten Sollwerten:
rpm -V kdesshKeine Ausgabe bedeutet normalerweise, dass keine Abweichung gefunden wurde. Eine Ausgabe weist auf Unterschiede hin, etwa bei Prüfsumme, Größe, Dateirechten, Eigentümer oder Zeitstempel. Eine geänderte Konfigurationsdatei kann beabsichtigt sein; eine unerwartet veränderte Programmdatei sollte dagegen untersucht werden.
Lokale Paketdateien prüfen
rpm -K prüft die kryptografische Signatur und die Integritätsinformationen einer lokalen RPM-Datei:
rpm -K ./kdessh-4.3.5-0.3.3.x86_64.rpmEine GPG-Signatur ist ein kryptografischer Herkunfts- und Integritätsnachweis. Vertraue nur Paketquellen und GPG-Schlüsseln, die zur Distribution oder zum jeweiligen Softwareprojekt gehören. Ein fehlender öffentlicher Schlüssel muss über den vorgesehenen, vertrauenswürdigen Mechanismus der Distribution bereitgestellt werden.
Pakete entfernen
Ein installiertes Paket entfernst du mit -e und dem Paketnamen:
sudo rpm -e kdesshVerwende hier nicht den Namen der lokalen Datei mit der Endung .rpm. Vor der Entfernung kannst du die bereitgestellten Dateien prüfen:
rpm -ql kdesshRPM verweigert das Entfernen, wenn andere installierte Pakete eine benötigte Abhängigkeit oder Funktion dieses Pakets voraussetzen. Dieser Fehler ist ein Schutzmechanismus. Prüfe die gemeldeten abhängigen Pakete und bewerte die gesamte Änderung, bevor du fortfährst.
Abhängigkeiten und höhere Paketmanager
Eine Abhängigkeit ist ein benötigtes Paket, eine Bibliothek oder eine bereitgestellte Funktion. Ein Programm kann beispielsweise eine bestimmte Version einer Bibliothek benötigen. Abhängigkeiten sind deshalb bei Installation, Aktualisierung und Entfernung relevant.
RPM kennt die Abhängigkeitsangaben im Paket und prüft, ob die Anforderungen erfüllt sind. Es lädt fehlende Pakete jedoch nicht automatisch aus Repositorys. Genau diese Aufgabe übernehmen höhere Paketmanager zusammen mit ihrer Transaktionsplanung.
Als Faustregel gilt: Nutze rpm für lokale Inspektion, gezielte Prüfungen und kontrollierte Einzeloperationen. Für Repository-Installationen, regelmäßige Aktualisierungen und komplexe Abhängigkeiten verwende den passenden höheren Paketmanager.
Fehlersuche bei typischen Problemen
„Paket ist bereits installiert“ oder vorhandene andere Version
Prüfe zunächst den Installationsstatus und die lokale Datei:
rpm -q kdessh
rpm -qpi ./kdessh-4.3.5-0.3.3.x86_64.rpmVergleiche Name, Version, Release und Architektur. Wenn ein reguläres Upgrade beabsichtigt ist, verwende -U oder den passenden höheren Paketmanager statt erneut -i zu verwenden.
Fehlende Abhängigkeiten
Lies die von RPM ausgegebenen Anforderungen genau und prüfe die Metadaten:
rpm -qpi ./paket.rpmInstalliere fehlende Pakete über konfigurierte Repositorys mit dnf, yum oder zypper. Verwende --nodeps nicht routinemäßig.
Falsche Paketarchitektur
Vergleiche System und Paket:
uname -m
rpm -qpi ./paket.rpmBeschaffe ein RPM für die passende Architektur. noarch ist nur dann passend, wenn der Paketinhalt tatsächlich architekturunabhängig ist.
Signaturprüfung schlägt fehl
Prüfe die Datei mit:
rpm -K ./paket.rpmEine fehlende oder ungültige Signatur kann auf eine nicht vertrauenswürdige Quelle, eine veränderte Datei oder einen fehlenden offiziellen Schlüssel hinweisen. Beziehe das Paket erneut aus einer vertrauenswürdigen Quelle und deaktiviere die Signaturprüfung nicht pauschal.
Entfernung wird wegen Abhängigkeiten verweigert
Prüfe die gemeldeten abhängigen Pakete sowie die Funktion des Pakets:
rpm -qi paketname
rpm -ql paketnamePlane die Entfernung der abhängigen Software bewusst oder nutze einen höheren Paketmanager, der die Auswirkungen der Transaktion anzeigt. --nodeps kann ein System in einen inkonsistenten Zustand bringen.
rpm -V meldet Abweichungen
Eine Abweichung kann durch eine gewollte Konfigurationsänderung, eine manuelle Änderung, eine beschädigte Installation oder externe Software verursacht worden sein. Unterscheide Konfigurationsdateien von ausführbaren Dateien. Bei unerwarteten Änderungen installiere das Paket aus einer vertrauenswürdigen Quelle erneut oder repariere es mit dem Systempaketmanager.
Praktischer Ablauf
- Prüfe Systemarchitektur und Paketquelle.
- Lies die Metadaten der lokalen Datei mit
rpm -qpi. - Prüfe Signatur und Integrität mit
rpm -K. - Verwende für eine einfache Einzelinstallation
sudo rpm -ivh; bei Abhängigkeiten möglichstdnfoderzypper. - Kontrolliere die installierte Version mit
rpm -qoderrpm -qi. - Nutze für spätere Aktualisierungen
-Uoder den distributionsüblichen Paketmanager. - Prüfe vor einer Entfernung Dateien und Abhängigkeiten und entferne anschließend mit
rpm -e paketname, sofern die Transaktion sicher ist.
Prüfungsrelevante Merksätze
rpmverwaltet lokale RPM-Pakete und die lokale RPM-Datenbank.-iinstalliert,-Uaktualisiert oder installiert,-qfragt ab und-eentfernt.-ivhbedeutet Installation mit ausführlicher Ausgabe und Fortschrittsanzeige.rpm -qerwartet normalerweise einen installierten Paketnamen, währendrpm -qpieine lokale, noch nicht installierte Datei untersucht.- RPM prüft Abhängigkeiten, löst sie aber nicht selbstständig aus Repositorys auf.
- Für Repositorys, Abhängigkeiten und Systempflege sind
dnf,yumoderzyppermeist die bessere Wahl. --nodepsund--nosignatureumgehen Schutzmechanismen und sollten nicht als normale Problemlösung eingesetzt werden.
Zur Vertiefung: Paketverwaltung mit RPM.