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.rpm

Der Pfad bezeichnet eine Datei. Für Abfragen und die Entfernung verwendest du normalerweise den installierten Namen:

rpm -q kdessh
sudo rpm -e kdessh

Der 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.rpm

Bestandteil — Bedeutung — Beispiel

Paketname — Name der Software — kdessh

Version — Hersteller- oder Projektversion — 4.3.5

Release/Build — Revision des Paketbaus, oft durch die Distribution — 0.3.3

Architektur — Zielplattform — x86_64

Dateiendung — Kennzeichnet das RPM-Archiv — .rpm

Am 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

Option — Zweck — Erwartetes Argument — Beispiel

-i — lokale RPM-Datei installieren — Dateipfad — sudo rpm -i ./paket.rpm

-U — Paket aktualisieren oder ein noch nicht installiertes Paket installieren — Dateipfad — sudo rpm -U ./paket.rpm

-q — installierte Pakete abfragen — Paketname — rpm -q kdessh

-qi — ausführliche Informationen anzeigen — Paketname — rpm -qi kdessh

-qa — alle installierten Pakete auflisten — kein zusätzliches Argument — rpm -qa

-ql — Dateien eines installierten Pakets anzeigen — Paketname — rpm -ql kdessh

-qf — Paketbesitzer einer Datei ermitteln — Dateipfad — rpm -qf /usr/bin/beispielprogramm

-e — installiertes Paket entfernen — Paketname — sudo rpm -e kdessh

-V — installierte Dateien gegen Datenbankwerte prüfen — Paketname — rpm -V kdessh

-K — Signatur und Prüfsummen einer RPM-Datei prüfen — Dateipfad — rpm -K ./paket.rpm

-v — ausführlichere Ausgabe — meist mit einer anderen Option — rpm -iv ./paket.rpm

-h — Fortschrittsmarkierungen ausgeben — meist bei Installation oder Upgrade — rpm -ivh ./paket.rpm

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.rpm

Die Ausgabe enthält unter anderem Name, Version, Release, Architektur, Beschreibung und Abhängigkeiten. Die Systemarchitektur kannst du beispielsweise so anzeigen:

uname -m

Zusätzlich solltest du die Signatur und Integrität prüfen:

rpm -K ./kdessh-4.3.5-0.3.3.x86_64.rpm

Lokale 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.rpm

rpm 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.rpm

Auf SUSE-Systemen kann der entsprechende Vorgang mit zypper erfolgen:

sudo zypper install ./kdessh-4.3.5-0.3.3.x86_64.rpm

Pakete 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 kdessh

Bei Erfolg wird die installierte Paketkennung ausgegeben. Eine ausführliche Beschreibung erhältst du mit:

rpm -qi kdessh

Typische Felder sind Name, Version, Release, Architektur, Installationsdatum, Größe, Signatur und Beschreibung.

Alle installierten Pakete auflisten

rpm -qa

Die Ausgabe kann sehr lang sein. Für eine Suche wird sie oft mit einem weiteren Kommando kombiniert, beispielsweise:

rpm -qa | grep -i ssh

Dateien und Paketbesitzer ermitteln

Welche Dateien ein installiertes Paket bereitstellt, zeigt -ql:

rpm -ql kdessh

Welches installierte Paket eine bestimmte Datei besitzt, ermittelst du mit -qf:

rpm -qf /usr/bin/beispielprogramm

Das 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 kdessh

Keine 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.rpm

Eine 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 kdessh

Verwende hier nicht den Namen der lokalen Datei mit der Endung .rpm. Vor der Entfernung kannst du die bereitgestellten Dateien prüfen:

rpm -ql kdessh

RPM 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.

Aufgabe — rpm — dnf/yum/zypper — Empfohlener Weg

Lokale RPM-Datei untersuchen — Sehr gut geeignet — Nicht erforderlich — rpm -qpi oder rpm -K

Einzelnes lokales RPM installieren — Möglich, Abhängigkeiten müssen vorhanden sein — Kann Abhängigkeiten auflösen — Höheren Paketmanager bevorzugen, wenn Quellen verfügbar sind

Paket aus Repository installieren — Nicht die passende Hauptaufgabe — Geeignet — dnf, yum oder zypper

Abhängigkeiten auflösen — Prüft nur — Geeignet — Höheren Paketmanager verwenden

Systemweit aktualisieren — Nicht die bevorzugte Lösung — Geeignet — Distributionswerkzeug verwenden

Paket entfernen — Möglich — Bewertet Auswirkungen meist umfassender — Für normale Systempflege höheren Paketmanager bevorzugen

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.rpm

Vergleiche 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.rpm

Installiere 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.rpm

Beschaffe 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.rpm

Eine 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 paketname

Plane 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

  1. Prüfe Systemarchitektur und Paketquelle.
  2. Lies die Metadaten der lokalen Datei mit rpm -qpi.
  3. Prüfe Signatur und Integrität mit rpm -K.
  4. Verwende für eine einfache Einzelinstallation sudo rpm -ivh; bei Abhängigkeiten möglichst dnf oder zypper.
  5. Kontrolliere die installierte Version mit rpm -q oder rpm -qi.
  6. Nutze für spätere Aktualisierungen -U oder den distributionsüblichen Paketmanager.
  7. 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

  • rpm verwaltet lokale RPM-Pakete und die lokale RPM-Datenbank.
  • -i installiert, -U aktualisiert oder installiert, -q fragt ab und -e entfernt.
  • -ivh bedeutet Installation mit ausführlicher Ausgabe und Fortschrittsanzeige.
  • rpm -q erwartet normalerweise einen installierten Paketnamen, während rpm -qpi eine 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, yum oder zypper meist die bessere Wahl.
  • --nodeps und --nosignature umgehen Schutzmechanismen und sollten nicht als normale Problemlösung eingesetzt werden.

Zur Vertiefung: Paketverwaltung mit RPM.