# dnf — Paketverwaltung unter Fedora und RHEL

> Praxis-Guide zu dnf, dem Paketmanager von Fedora, RHEL und CentOS Stream — Installieren, Updaten, Module, Gruppen sowie History und Rollback.

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

<!-- PROSE:intro -->
dnf (Dandified YUM) ist der Paketmanager von Fedora, RHEL 8+, CentOS Stream sowie Rocky Linux und AlmaLinux – der Nachfolger des klassischen yum mit schnellerer und sauberer Abhängigkeitsauflösung. Damit installierst, aktualisierst und entfernst du Software, verwaltest Repositories und arbeitest mit Modulen und Gruppen, um ganze Software-Stacks oder bestimmte Versions-Streams gezielt auszuwählen. Besonders praktisch ist die Transaktions-History: Jede Aktion wird protokolliert, und mit `dnf history undo` machst du eine missglückte Installation oder ein fehlgeschlagenes Update wieder rückgängig. Dieser Guide zeigt dir die wichtigsten dnf-Befehle für den Alltag – vom Update über Module bis zum Rollback.
<!-- PROSE:intro:end -->

## Aktualisieren & Upgrade

`dnf check-update` — Prüft auf verfügbare Paket-Updates.

```bash
sudo dnf check-update
```

`dnf update` — Aktualisiert alle Pakete (Alias für upgrade).

```bash
sudo dnf update -y
```

`dnf upgrade` — Aktualisiert alle installierten Pakete.

```bash
sudo dnf upgrade
```

`dnf upgrade --security` — Installiert ausschließlich Sicherheitsupdates.

```bash
sudo dnf upgrade --security
```

`dnf upgrade <package>` — Aktualisiert ein bestimmtes Paket.

```bash
sudo dnf upgrade nginx
```

## Installieren & Entfernen

`dnf install <package>` — Installiert ein Paket.

```bash
sudo dnf install nginx
```

`dnf install -y <package>` — Installiert ohne Rückfrage.

```bash
sudo dnf install -y httpd php
```

`dnf install <file>.rpm` — Installiert eine lokale RPM-Datei (mit Abhängigkeitsauflösung).

```bash
sudo dnf install ./package.rpm
```

`dnf reinstall <package>` — Installiert ein Paket neu.

```bash
sudo dnf reinstall openssh-server
```

`dnf remove <package>` — Entfernt ein Paket und seine nicht mehr benötigten Abhängigkeiten.

```bash
sudo dnf remove nginx
```

`dnf autoremove` — Entfernt nicht mehr benötigte Abhängigkeitspakete.

```bash
sudo dnf autoremove
```

## Suchen & Informationen

`dnf search <query>` — Sucht Pakete nach Name oder Beschreibung.

```bash
dnf search nodejs
```

`dnf info <package>` — Zeigt detaillierte Informationen zu einem Paket.

```bash
dnf info nginx
```

`dnf list installed` — Listet alle installierten Pakete auf.

```bash
dnf list installed
```

`dnf list available` — Listet alle verfügbaren Pakete auf.

```bash
dnf list available | grep php
```

`dnf provides '<file>'` — Findet heraus, welches Paket eine Datei oder ein Kommando bereitstellt.

```bash
dnf provides '*/bin/dig'
```

`dnf repoquery -l <package>` — Listet die Dateien auf, die ein Paket installiert.

```bash
dnf repoquery -l nginx
```

`dnf deplist <package>` — Zeigt die Abhängigkeiten eines Pakets.

```bash
dnf deplist nginx
```

## Gruppen & Module

`dnf group list` — Listet verfügbare Paketgruppen auf.

```bash
dnf group list
```

`dnf group install '<group>'` — Installiert eine Paketgruppe.

```bash
sudo dnf group install 'Development Tools'
```

`dnf module list` — Listet verfügbare Module und Streams auf.

```bash
dnf module list
```

`dnf module enable <module>:<stream>` — Aktiviert einen Modul-Stream.

```bash
sudo dnf module enable nodejs:20
```

`dnf module install <module>:<stream>` — Installiert einen Modul-Stream.

```bash
sudo dnf module install php:8.3
```

## Repositories

`dnf repolist` — Listet aktivierte Repositories auf.

```bash
dnf repolist
```

`dnf repolist all` — Listet alle Repositories auf (aktivierte und deaktivierte).

```bash
dnf repolist all
```

`dnf config-manager --add-repo <url>` — Fügt ein neues Repository hinzu.

```bash
sudo dnf config-manager --add-repo https://rpm.example.com/repo.repo
```

`dnf config-manager --set-enabled <repo>` — Aktiviert ein deaktiviertes Repository.

```bash
sudo dnf config-manager --set-enabled crb
```

`dnf config-manager --set-disabled <repo>` — Deaktiviert ein Repository.

```bash
sudo dnf config-manager --set-disabled epel-testing
```

## Verlauf & Aufräumen

`dnf history` — Zeigt die Transaktions-History.

```bash
dnf history
```

`dnf history info <id>` — Zeigt Details zu einer bestimmten Transaktion.

```bash
dnf history info 15
```

`dnf history undo <id>` — Macht eine bestimmte Transaktion rückgängig.

```bash
sudo dnf history undo 15
```

`dnf clean all` — Löscht alle zwischengespeicherten Daten (Metadaten + Pakete).

```bash
sudo dnf clean all
```

`dnf makecache` — Baut den Metadaten-Cache neu auf.

```bash
sudo dnf makecache
```

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

dnf nimmt dir die mühsame Abhängigkeitsverwaltung ab und macht das Pflegen eines Fedora- oder RHEL-Systems übersichtlich und reproduzierbar. Geh mit entfernenden Aktionen wie `remove`, `autoremove` und `distro-sync` bewusst um – sie können mehr abräumen als gedacht, deshalb lohnt ein prüfender Blick auf die angekündigte Paketliste, bevor du bestätigst. Verändernde Befehle brauchen `sudo`; sollte ein Update etwas zerschießen, ist `dnf history undo <id>` dein Rettungsanker, um die letzte Transaktion sauber zurückzunehmen. Füge nur Repositories und GPG-Schlüssel aus vertrauenswürdigen Quellen hinzu – fremde Repos können beliebige Pakete unterschieben.

## Weiterführende Links

- [dnf-Dokumentation](https://dnf.readthedocs.io/) – offizielle Referenz zu Befehlen und Optionen (englisch)
- [Fedora-Dokumentation: Software mit dnf verwalten](https://docs.fedoraproject.org/en-US/quick-docs/dnf/) – offizieller Einstieg in die Paketverwaltung (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager von Alpine Linux, schlank und container-freundlich
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – komfortabler Paketmanager von Debian und Ubuntu
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – das klassische, skript-freundliche Debian/Ubuntu-Werkzeug

