# rpm — Das RPM-Paketwerkzeug auf unterster Ebene

> Praxis-Guide zu rpm — dem Low-Level-Paketwerkzeug für Red-Hat-Systeme: einzelne RPM-Pakete abfragen, installieren, verifizieren und verwalten.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/rpm/

<!-- PROSE:intro -->
rpm ist das Low-Level-Werkzeug, das unter Paketmanagern wie dnf und zypper arbeitet: Es installiert, entfernt und durchsucht einzelne lokale `.rpm`-Pakete auf Red-Hat-basierten Systemen wie Fedora, RHEL oder openSUSE. Anders als dnf löst rpm aber keine Abhängigkeiten auf – fehlt eine benötigte Bibliothek, bricht die Installation einfach ab. Fürs Alltagsgeschäft greifst du deshalb besser zu dnf; rpm ist die richtige Wahl, wenn du ein einzelnes Paket gezielt abfragen, eine RPM-Datei vor der Installation prüfen oder ein installiertes Paket genauer untersuchen willst. Dieser Guide zeigt dir die wichtigsten Kommandos für Installation, Abfrage und Verifikation.
<!-- PROSE:intro:end -->

## Installieren & Entfernen

`rpm -ivh <file>.rpm` — Installiert ein RPM-Paket (ausführlich + Fortschrittsbalken).

```bash
sudo rpm -ivh package.rpm
```

`rpm -Uvh <file>.rpm` — Aktualisiert ein Paket (installiert es, falls noch nicht vorhanden).

```bash
sudo rpm -Uvh package-2.0.rpm
```

`rpm -Fvh <file>.rpm` — Auffrischen: aktualisiert nur, wenn bereits eine ältere Version installiert ist.

```bash
sudo rpm -Fvh package-2.0.rpm
```

`rpm -e <package>` — Entfernt (löscht) ein installiertes Paket.

```bash
sudo rpm -e nginx
```

`rpm -e --nodeps <package>` — Entfernt ein Paket und ignoriert dabei Abhängigkeiten.

```bash
sudo rpm -e --nodeps libfoo
```

## Installierte Pakete abfragen

`rpm -qa` — Listet alle installierten Pakete auf.

```bash
rpm -qa
```

`rpm -qa | grep <pattern>` — Sucht nach installierten Paketen.

```bash
rpm -qa | grep php
```

`rpm -qi <package>` — Zeigt detaillierte Informationen zu einem installierten Paket.

```bash
rpm -qi nginx
```

`rpm -ql <package>` — Listet alle von einem Paket installierten Dateien auf.

```bash
rpm -ql nginx
```

`rpm -qc <package>` — Listet nur die Konfigurationsdateien eines Pakets auf.

```bash
rpm -qc nginx
```

`rpm -qd <package>` — Listet nur die Dokumentationsdateien eines Pakets auf.

```bash
rpm -qd nginx
```

`rpm -qR <package>` — Listet die Abhängigkeiten eines Pakets auf.

```bash
rpm -qR nginx
```

`rpm -qf <file>` — Findet heraus, zu welchem Paket eine Datei gehört.

```bash
rpm -qf /usr/sbin/nginx
```

## RPM-Dateien abfragen

`rpm -qip <file>.rpm` — Zeigt Informationen zu einer nicht installierten RPM-Datei.

```bash
rpm -qip package.rpm
```

`rpm -qlp <file>.rpm` — Listet die Dateien innerhalb einer RPM-Datei auf.

```bash
rpm -qlp package.rpm
```

`rpm -qRp <file>.rpm` — Zeigt die Abhängigkeiten einer RPM-Datei.

```bash
rpm -qRp package.rpm
```

## Verifizieren

`rpm -V <package>` — Prüft installierte Dateien gegen die Paketdatenbank.

```bash
rpm -V nginx
```

`rpm -Va` — Prüft alle installierten Pakete.

```bash
rpm -Va
```

`rpm -K <file>.rpm` — Prüft Signatur und Integrität einer RPM-Datei.

```bash
rpm -K package.rpm
```

`rpm --import <key>` — Importiert einen öffentlichen GPG-Schlüssel zur Paketverifikation.

```bash
sudo rpm --import https://example.com/RPM-GPG-KEY
```

## Häufige Muster

`rpm -qa --last | head -20` — Zeigt die 20 zuletzt installierten/aktualisierten Pakete.

```bash
rpm -qa --last | head -20
```

`rpm -qa --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n'` — Paketliste in eigenem Format.

```bash
rpm -qa --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' | sort
```

`rpm2cpio <file>.rpm | cpio -idmv` — Entpackt Dateien aus einer RPM, ohne sie zu installieren.

```bash
rpm2cpio package.rpm | cpio -idmv
```

<!-- PROSE:outro -->
## Fazit

rpm gibt dir die volle, direkte Kontrolle über einzelne Pakete – samt der Verantwortung, die dazugehört. Weil rpm keine Abhängigkeiten auflöst, solltest du zum Installieren und Aktualisieren im Normalfall dnf (bzw. zypper unter openSUSE) verwenden und rpm für gezielte Abfragen, Verifikation und das Auspacken einzelner Dateien reservieren. Besonders vorsichtig solltest du mit `-e`/`--erase` sein (entfernt Pakete) sowie mit `--nodeps` und `--force`: Sie umgehen die Sicherheitsnetze und können dein System in einen inkonsistenten Zustand bringen. Prüfe heruntergeladene Pakete vor der Installation grundsätzlich mit `rpm -K` (GPG-Signatur) und importiere die Schlüssel der Quelle zuvor per `rpm --import`.

## Weiterführende Links

- [rpm.org](https://rpm.org/) – offizielle Projektseite des RPM Package Managers (englisch)
- [RPM-Dokumentation (rpm.org)](https://rpm.org/documentation.html) – Referenz, Handbücher und Manpages zum Paketmanager (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager der Distribution Alpine Linux
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – komfortables High-Level-Paketwerkzeug für Debian/Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches Debian/Ubuntu-Paketwerkzeug für Skripte

