dnf-Befehl: Pakete installieren, aktualisieren, entfernen und Unterschiede zu yum
Der Befehl dnf ist der Paketverwaltungsbefehl für RHEL-basierte Linux-Systeme, mit dem du Pakete suchst, installierst, aktualisierst und entfernst. Unter AlmaLinux 9 startet auch die Eingabe von yum dasselbe Programm. Auf einem Server mit AlmaLinux 9 habe ich search, info, provides und history tatsächlich ausgeführt und anhand der Ausgabe geprüft, wo search, info und provides bei der Paketsuche jeweils nachsehen und welche Einträge history speichert.
Befehle, die das System verändern, etwa Installieren, Entfernen oder Aktualisieren, habe ich nicht ausgeführt. Ihr Verhalten habe ich anhand der offiziellen DNF-Dokumentation und der auf dem Server vorhandenen Verlaufseinträge geprüft.
1️⃣ Wie der dnf-Befehl mit yum zusammenhängt
Man könnte leicht annehmen, dass die Eingabe von yum das alte yum startet, doch unter AlmaLinux 9 sind yum und dnf beide Links auf dieselbe ausführbare Datei dnf-3.
ls -l /usr/bin/yum /usr/bin/dnflrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/yum -> dnf-3Der Unterschied zwischen yum und dnf liegt nur im Namen, den du eingibst; egal, welchen du nutzt, Unterbefehle und Optionen sind gleich. Auch die Ausgabe von search htop war mit yum und mit dnf identisch.
Laut der offiziellen DNF-Dokumentation [Changes in DNF CLI compared to YUM] verhalten sich update und upgrade gleich, und die Dokumentation empfiehlt upgrade.
Auf älteren Distributionen ohne dnf verwendest du den yum-Befehl unverändert. Die Namen der Unterbefehle in diesem Beitrag wie install, search und history sind bei yum dieselben.
2️⃣ Pakete abfragen mit dem dnf-Befehl: search, info, provides
Wenn du den genauen Paketnamen des Programms, das du installieren willst, nicht kennst, suchst du mit search und einem einzelnen Wort. search sucht das Wort in Paketnamen und Zusammenfassungen (Summary) und setzt das Paket mit exakt passendem Namen ganz nach oben.
dnf search htopLast metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewerFür htop gibt es nur ein Paket mit genau diesem Namen, daher bestand das Ergebnis aus einer einzigen Zeile unter [Name Exactly Matched].
dnf search wgetLast metadata expiration check: 0:22:35 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: wget ==========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
========================= Name & Summary Matched: wget =========================
perl-HTTP-Tinyish-Wget.noarch : HTTP::Tinyish wget backend
wget2-devel.x86_64 : Libraries and header files needed for using wget2 libraries
wget2-libs.x86_64 : Runtime libraries for GNU Wget2
============================== Name Matched: wget ==============================
wget2.x86_64 : An advanced file and recursive website downloaderEin Wort, das in mehreren Paketen vorkommt, etwa wget, erschien in drei Gruppen aufgeteilt: exakt passender Name, Treffer in Name und Zusammenfassung sowie Treffer nur im Namen.
search berücksichtigt den Beschreibungstext (Description) nicht und eignet sich daher nicht für Wörter, die nur in der Beschreibung stehen. In diesem Fall erweiterst du die Suche mit der Option [--all] auf Beschreibung und URL.
Kennst du den Paketnamen, prüfst du mit info Version, Größe und das Repository, aus dem das Paket stammt.
dnf info htopLast metadata expiration check: 0:22:37 ago on Wed Oct 28 15:24:31 2026.
Available Packages
Name : htop
Version : 3.3.0
Release : 1.el9
Architecture : x86_64
Size : 198 k
Source : htop-3.3.0-1.el9.src.rpm
Repository : epel
Summary : Interactive process viewer
URL : http://hisham.hm/htop/
License : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
: top(1).Das noch nicht installierte htop erscheint bei info htop unter [Available Packages] mit Version 3.3.0 und Repository epel. htop gibt es nur im Repository epel; führst du search ohne epel erneut aus, erscheint nichts.
dnf info wgetLast metadata expiration check: 0:22:38 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
Name : wget
Version : 1.21.1
Release : 11.el9_8
Architecture : x86_64
Size : 3.1 M
Source : wget-1.21.1-11.el9_8.src.rpm
Repository : @System
From repo : appstream
Summary : A utility for retrieving files using the HTTP or FTP protocols
URL : http://www.gnu.org/software/wget/
License : GPLv3+
Description : GNU Wget is a file retrieval utility which can use either the HTTP or
: FTP protocols. Wget features include the ability to work in the
: background while you are logged out, recursive retrieval of
: directories, file name wildcard matching, remote file timestamp
: storage and comparison, use of Rest with FTP servers and Range with
: HTTP servers to retrieve files over slow or unstable connections,
: support for Proxy servers, and configurability.Das bereits installierte wget erschien unter [Installed Packages]. Repository war @System, und das Repository, aus dem es bei der Installation geladen wurde, stand in der Zeile [From repo] als appstream.
Kennst du umgekehrt nur einen Dateinamen, aber nicht das Paket, in dem die Datei steckt, gibst du provides den Dateipfad mit.
dnf provides /usr/bin/treeLast metadata expiration check: 0:22:40 ago on Wed Oct 28 15:24:31 2026.
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : @System
Matched from:
Filename : /usr/bin/tree
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : baseos
Matched from:
Filename : /usr/bin/treeDie Suche nach /usr/bin/tree ergab zwei Gruppen: das installierte Paket tree (@System) und das im Repository (baseos). Der Filename unter [Matched from] ist der Pfad, der tatsächlich gepasst hat. Gibst du nur einen Dateinamen ohne Pfad an, sucht dnf erneut mit vorangestelltem /usr/bin/ und /usr/sbin/ und endet, wenn auch das nichts findet, mit dem Fehler unten.
dnf provides nosuchfileLast metadata expiration check: 0:22:41 ago on Wed Oct 28 15:24:31 2026.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.Die Fehlermeldung rät, den vollständigen Pfad anzugeben oder den Platzhalter [*/] voranzustellen. Was die drei Befehle jeweils als Eingabe erwarten und wo sie suchen, kannst du im Diagramm unten Schritt für Schritt vergleichen.
3️⃣ Pakete installieren, entfernen, aktualisieren: install, remove, upgrade
Das gefundene Paket installierst du mit install. dnf installiert nicht nur das angegebene Paket, sondern auf einmal auch die Abhängigkeitspakete, die es benötigt.
dnf install htopLaut offizieller Dokumentation zeigt dnf die Liste der zu installierenden Pakete (die Transaktionsübersicht) an und fragt dann, ob es fortfahren soll; mit [-y] geht es ohne Nachfrage weiter.
Welche Abhängigkeitspakete bei der Installation mitkommen, kannst du vorab mit repoquery [--requires] prüfen.
dnf repoquery --requires htopLast metadata expiration check: 0:22:59 ago on Wed Oct 28 15:24:31 2026.
libc.so.6(GLIBC_2.34)(64bit)
libcap.so.2()(64bit)
libhwloc.so.15()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libncursesw.so.6()(64bit)
libnl-3.so.200()(64bit)
libnl-3.so.200(libnl_3)(64bit)
libnl-genl-3.so.200()(64bit)
libnl-genl-3.so.200(libnl_3)(64bit)
libtinfo.so.6()(64bit)
rtld(GNU_HASH)Mit [--requires] allein erscheinen nur die Namen der Bibliotheken, die htop benötigt. In welchem Paket diese Bibliotheken stecken, prüfst du mit dem nächsten Befehl.
dnf repoquery --requires --resolve htopLast metadata expiration check: 0:23:01 ago on Wed Oct 28 15:24:31 2026.
glibc-0:2.34-283.el9_8.i686
glibc-0:2.34-283.el9_8.x86_64
hwloc-libs-0:2.4.1-6.el9_7.x86_64
libcap-0:2.48-10.el9_8.1.x86_64
libnl3-0:3.11.0-1.el9.x86_64
ncurses-libs-0:6.2-12.20210508.el9.x86_64Mit zusätzlichem [--resolve] werden daraus die Namen der Pakete, die diese Bibliotheken bereitstellen. Davon fehlte hwloc-libs auf dem Testserver, daher wird es bei der Installation von htop mitinstalliert.
remove entfernt das angegebene Paket zusammen mit den Paketen, die davon abhängen, und in der Standardeinstellung auch Abhängigkeitspakete, die nicht mehr benötigt werden.
dnf remove htopAuch wenn du nur htop entfernst, werden Abhängigkeitspakete, die kein anderes Paket braucht, mit entfernt, etwa das für htop installierte hwloc-libs.
Pakete, die früher als Abhängigkeiten installiert wurden, aber inzwischen von keinem Paket mehr gebraucht werden, entfernt autoremove. Die Liste der zu entfernenden Pakete prüfst du vorher mit list [--autoremove].
dnf list --autoremoveLast metadata expiration check: 0:23:09 ago on Wed Oct 28 15:24:31 2026.
Autoremove Packages
cmake-rpm-macros.noarch 3.31.8-3.el9 @appstream
grub2-tools-efi.x86_64 1:2.06-126.el9_8.alma.1 @baseos
grub2-tools-extra.x86_64 1:2.06-126.el9_8.alma.1 @baseos
libatomic.x86_64 11.5.0-14.el9.alma.1 @baseos
libvisual.x86_64 1:0.4.0-34.el9 @appstream
libwayland-server.x86_64 1.21.0-1.el9 @appstreamdnf autoremoveAuf dem Testserver standen 6 Pakete in der Liste, und autoremove entfernt diese 6 auf einmal.
Ob es für installierte Pakete neue Versionen gibt, prüfst du mit check-update. Mit einem Paketnamen wird nur dieses Paket geprüft.
dnf check-update libavif libdav1dLast metadata expiration check: 0:52:20 ago on Wed Oct 28 15:24:31 2026.
libavif.x86_64 1.1.1-3.el9 epel
libdav1d.x86_64 1.5.4-1.el9 epelDer obige Befehl mit libavif und libdav1d endete mit dem Exit-Code 100, weil es für beide neue Versionen gab. check-update endet mit 100, wenn Updates vorliegen, mit 0, wenn keine vorliegen, und mit 1 bei einem Fehler; du kannst das also in Skripten als Bedingung für Verzweigungen nutzen.
Gibst du list einen Paketnamen mit, erscheinen die installierte Version und die neue Version im Repository zusammen. Mit updateinfo list prüfst du, zu welchem Advisory das Update gehört.
dnf list libavifLast metadata expiration check: 0:52:21 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
libavif.x86_64 0.11.1-5.el9 @epel
Available Packages
libavif.x86_64 1.1.1-3.el9 epelBei libavif erschien die installierte Version 0.11.1-5.el9 unter [Installed Packages] und die Version 1.1.1-3.el9 aus dem Repository getrennt davon unter [Available Packages].
dnf updateinfo list libavifLast metadata expiration check: 0:52:24 ago on Wed Oct 28 15:24:31 2026.
FEDORA-EPEL-2026-d611eab94a bugfix libavif-1.1.1-3.el9.x86_64Diese neue Version war ein Update zum Advisory FEDORA-EPEL-2026-d611eab94a vom Typ bugfix. Sicherheitsupdates erscheinen an derselben Stelle mit Schweregrad und Sec., etwa [Moderate/Sec.].
Updates führst du mit upgrade aus. upgrade installiert neue Versionen nur, soweit die Abhängigkeiten passen, daher wird die von check-update angezeigte Version nicht unbedingt genau so installiert.
dnf upgrade libavifMit einem Paketnamen werden nur dieses Paket und die nötigen Abhängigkeitspakete auf neue Versionen gebracht.
dnf upgradeLässt du den Namen weg, sind alle installierten Pakete betroffen. Der Ablauf mit Transaktionsübersicht und Rückfrage ist derselbe wie bei install, und jede ausgeführte Transaktion bleibt mit einer Nummer in history erhalten.
4️⃣ Repository-Liste mit dem dnf-Befehl: repolist
Die Pakete, nach denen search und install suchen, liegen in Repositorys (repository). repolist gibt id und Namen der aktuell aktivierten Repositorys aus.
dnf repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extras
nginx-stable nginx stable repo
remi-modular Remi's Modular repository for Enterprise Linux 9 - x86_64
remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - x86_64Man könnte leicht annehmen, dass ein Repository, das nicht in der Liste steht, auf dem Server nicht existiert, doch die Standardausgabe von repolist zeigt nur aktivierte Repositorys. Mit [--all] erscheinen auch deaktivierte Repositorys, zusammen mit einer Spalte status. Auf dem Testserver waren alle drei CRB-Repositorys von AlmaLinux 9 disabled.
dnf repolist --all | grep -i crbcrb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabledPaketanzahl, Mirror-Adresse, Ablaufzeit der Metadaten und Speicherort der Konfigurationsdatei eines einzelnen Repositorys prüfst du mit repoinfo.
dnf repoinfo baseosLast metadata expiration check: 0:22:55 ago on Wed Oct 28 15:24:31 2026.
Repo-id : baseos
Repo-name : AlmaLinux 9 - BaseOS
Repo-status : enabled
Repo-revision : 1793090609
Repo-updated : Tue Oct 27 17:43:29 2026
Repo-pkgs : 3458
Repo-available-pkgs: 3458
Repo-size : 21 G
Repo-mirrors : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl : http://aws.repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/ (9 more)
Repo-expire : 86400 second(s) (last: Wed Oct 28 15:24:26 2026)
Repo-filename : /etc/yum.repos.d/almalinux-baseos.repo
Total packages: 3458repoinfo baseos zeigte 3.458 Pakete, und die Metadaten wurden laut Einstellung alle 86.400 Sekunden (einen Tag) neu geprüft. Die .repo-Datei in der Zeile [Repo-filename] ist die Konfigurationsdatei dieses Repositorys. Die Optionen [--set-enabled] und [--set-disabled], mit denen du Repositorys aktivierst und deaktivierst, werden zusammen mit dem Befehl config-manager aus dnf-plugins-core verwendet.
5️⃣ Verlauf und Rückgängigmachen mit dem dnf-Befehl: history
Nach vielen Installationen und Entfernungen ist schwer nachzuvollziehen, was du wann geändert hast, doch dnf nummeriert jede Transaktion (transaction) und zeichnet sie in history auf. Mit einem Paketnamen erscheinen nur die Transaktionen, die dieses Paket geändert haben.
dnf history list tmuxID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1In der auf tmux eingegrenzten Ausgabe blieb nur eine Zeile übrig: Transaktion 51, die tmux installiert hat. Nummernbereiche schreibst du mit zwei Punkten, etwa [50..51].
dnf history list 50..51ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1
50 | -y -q install mlocate | 2026-10-07 19:39 | Install | 1 EEDie Zahl in der Spalte [Altered] ist die Anzahl der geänderten Pakete. Am Ende von Zeile 50 stand [EE]: Die Transaktion wurde abgeschlossen, hat aber Warnungen oder Fehler ausgegeben.
Befehlszeile, geänderte Pakete und Ergebniscode einer einzelnen Transaktion prüfst du mit history info.
dnf history info 51Transaction ID : 51
Begin time : Thu Oct 15 20:40:51 2026
Begin rpmdb : d3db9c92a9d0f6ef9a7a1404552bb76e9d56ba7602b1fce73fa5a62170d33c5c
End time : Thu Oct 15 20:40:51 2026 (0 seconds)
End rpmdb : a862c33ee6a2f2d0479e4dc2631907dee47591c5b6795551b755c6cd090ac1df
User : root <root>
Return-Code : Success
Releasever : 9
Command Line : install -y tmux
Persistence : Persist
Comment :
Packages Altered:
Install tmux-3.2a-5.el9.x86_64 @baseosBeim Öffnen von Nummer 51 stand unter [Command Line] der ausgeführte Befehl install -y tmux unverändert da. Unter [Packages Altered] standen das installierte tmux und das Repository @baseos, unter [Return-Code] Success. Ohne Nummer wird die letzte Transaktion angezeigt.
Hast du etwas versehentlich installiert, gibst du history undo die Transaktionsnummer mit und führst so die Umkehrung dieser Transaktion aus. rollback setzt den Paketzustand auf den Stand direkt nach der angegebenen Transaktion zurück.
dnf history undo 51Transaktion 51 war die Installation von tmux, daher wird undo 51 zu einer umgekehrten Transaktion, die tmux entfernt.
dnf history rollback 50rollback 50 macht alle nach 50 ausgeführten Transaktionen bis zur letzten rückgängig, daher kann das Ergebnis von undo 51 abweichen, das nur tmux entfernt.
Laut offizieller Dokumentation enden undo und rollback, ohne etwas zu ändern, wenn sich ein Paket nicht zurücksetzen lässt. Fehlen direkt mit rpm vorgenommene Änderungen im Verlauf, brechen sie trotzdem nicht mit einem Fehler ab.
🔲 Simulator für den Befehl dnf
Im Simulator unten kannst du die Befehle search, info, provides, repolist und history selbst eingeben und die Ausgabe prüfen. Mit yum erhältst du dieselben Ergebnisse.
🔢 FAQ & empfohlene Inhalte



ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.