dnf-commando: pakketten installeren, bijwerken en verwijderen, en het verschil met yum
Het dnf-commando is het pakketbeheercommando waarmee je op Linux-distributies uit de RHEL-familie pakketten zoekt, installeert, bijwerkt en verwijdert. Op AlmaLinux 9 start ook yum hetzelfde programma. Op een AlmaLinux 9-server hebben we search, info, provides en history echt uitgevoerd en in de uitvoer bekeken waar search, info en provides elk zoeken naar pakketten, en welke werkgeschiedenis in history achterblijft.
Commando's die het systeem wijzigen, zoals installeren, verwijderen en bijwerken, hebben we niet uitgevoerd. Dat gedrag is gecontroleerd aan de hand van de officiële DNF-documentatie en de werkgeschiedenis die al op de server stond.
1️⃣ Verband tussen het dnf-commando en yum
Het is makkelijk om aan te nemen dat yum het oude yum start, maar op AlmaLinux 9 zijn yum en dnf allebei links naar hetzelfde uitvoerbare bestand 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-3Het enige verschil tussen yum en dnf is de naam die je typt; welke je ook gebruikt, de subcommando's en opties zijn hetzelfde. Ook search htop gaf met yum en met dnf precies dezelfde uitvoer.
Volgens de officiële DNF-documentatie [Changes in DNF CLI compared to YUM] doen update en upgrade hetzelfde, en de documentatie raadt upgrade aan.
Op oudere distributies zonder dnf gebruik je het yum-commando zoals gewoonlijk. De namen van subcommando's in dit artikel, zoals install, search en history, zijn in yum hetzelfde.
2️⃣ Pakketten opzoeken met het dnf-commando: search, info, provides
Als je de precieze pakketnaam van het programma dat je wilt installeren niet weet, zoek je met search en één woord. search zoekt het woord in pakketnamen en samenvattingen (Summary) en zet pakketten waarvan de naam precies overeenkomt bovenaan.
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 viewerVoor htop bestond maar één pakket met precies die naam, dus bleef het bij één regel onder [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 downloaderEen woord dat in meerdere pakketten voorkomt, zoals wget, werd in drie groepen verdeeld: precies dezelfde naam, in naam én samenvatting, en alleen in de naam.
search kijkt niet naar de beschrijving (Description), dus voor een woord dat alleen in de beschrijving staat werkt het niet. Voeg dan de optie [--all] toe om ook in de beschrijving en de URL te zoeken.
Weet je de pakketnaam, dan controleer je met info de versie, de grootte en uit welke repository het pakket komt.
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).Het nog niet geïnstalleerde htop verschijnt bij info htop onder [Available Packages] met versie 3.3.0 en repository epel. htop staat alleen in de epel-repository, dus als je search opnieuw uitvoert zonder epel, vind je niets.
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.Het al geïnstalleerde wget stond onder [Installed Packages]. Repository was @System, en de repository waaruit het bij de installatie kwam, stond als appstream op de regel [From repo].
Ken je omgekeerd alleen de bestandsnaam en weet je niet in welk pakket die zit, geef dan een bestandspad mee aan provides.
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/treeZoeken op /usr/bin/tree gaf twee groepen voor het tree-pakket: de geïnstalleerde kant (@System) en de repositorykant (baseos). De Filename onder [Matched from] is het pad dat echt overeenkwam. Geef je alleen een bestandsnaam zonder pad op, dan zet dnf er /usr/bin/ en /usr/sbin/ voor en zoekt opnieuw; vindt het dan nog niets, dan eindigt het met de onderstaande fout.
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.De foutmelding raadt aan het volledige pad op te geven of de wildcard [*/] ervoor te zetten. Wat de drie commando's als invoer nemen en waar ze zoeken, kun je in het diagram hieronder stap voor stap vergelijken.
3️⃣ Pakketten installeren, verwijderen en bijwerken: install, remove, upgrade
Een gevonden pakket installeer je met install. dnf installeert niet alleen het opgegeven pakket, maar in één keer ook de afhankelijke pakketten die het nodig heeft.
dnf install htopVolgens de officiële documentatie toont dnf eerst de lijst met te installeren pakketten (de transactiesamenvatting) en vraagt dan of je wilt doorgaan; met [-y] gaat het verder zonder te vragen.
Welke afhankelijke pakketten bij de installatie nodig zijn, kun je vooraf controleren met repoquery [--requires].
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)Met alleen [--requires] krijg je alleen de namen van de bibliotheken die htop nodig heeft. In welk pakket die bibliotheken zitten, zie je met het volgende commando.
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_64Voeg je [--resolve] toe, dan worden het de namen van de pakketten die die bibliotheken leveren. Daarvan ontbrak hwloc-libs op de testserver, dus wordt het meegeïnstalleerd als je htop installeert.
remove verwijdert het opgegeven pakket samen met de pakketten die ervan afhankelijk zijn, en met de standaardinstellingen ook afhankelijke pakketten die niet meer nodig zijn.
dnf remove htopZelfs als je alleen htop verwijdert, gaan afhankelijke pakketten die geen ander pakket nodig heeft, zoals het voor htop geïnstalleerde hwloc-libs, mee.
Pakketten die ooit als afhankelijkheid zijn geïnstalleerd maar nu door geen enkel pakket meer nodig zijn, verwijder je met autoremove. Controleer eerst met list [--autoremove] wat er verwijderd wordt.
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 autoremoveOp de testserver stonden er 6 pakketten in de lijst, en autoremove verwijdert deze 6 in één keer.
Of er voor geïnstalleerde pakketten een nieuwe versie is, controleer je met check-update. Met een pakketnaam erbij kijkt het alleen naar dat pakket.
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 epelHet commando hierboven met libavif en libdav1d eindigde met exitcode 100, omdat er voor allebei een nieuwe versie was. check-update eindigt met 100 als er updates zijn, met 0 als er geen zijn en met 1 bij een fout, dus je kunt het in scripts als voorwaarde gebruiken.
Met list en een pakketnaam zie je de geïnstalleerde versie en de nieuwe versie in de repository samen. Met updateinfo list controleer je bij welke advisory die update hoort.
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 epelVoor libavif stond de geïnstalleerde 0.11.1-5.el9 onder [Installed Packages] en de 1.1.1-3.el9 uit de repository apart onder [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_64Die nieuwe versie was een update bij de bugfix-advisory FEDORA-EPEL-2026-d611eab94a. Bij beveiligingsupdates staat op dezelfde plek de ernst met Sec. erachter, zoals [Moderate/Sec.].
Bijwerken doe je met upgrade. upgrade installeert alleen nieuwe versies binnen wat de afhankelijkheden toelaten, dus de versie die check-update toonde, wordt misschien niet precies zo geïnstalleerd.
dnf upgrade libavifMet een pakketnaam erbij worden alleen dat pakket en de afhankelijke pakketten die het nodig heeft naar een nieuwe versie gebracht.
dnf upgradeLaat je de naam weg, dan gaat het om alle geïnstalleerde pakketten. Het verloop, eerst een transactiesamenvatting en dan de vraag of je wilt doorgaan, is hetzelfde als bij install, en de uitgevoerde transactie wordt met een nummer in history vastgelegd.
4️⃣ Repositorylijst met het dnf-commando: repolist
search en install zoeken pakketten in repository's. repolist toont de id en naam van de repository's die nu ingeschakeld zijn.
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_64Het is makkelijk om aan te nemen dat een repository die niet in de lijst staat niet op de server bestaat, maar de standaarduitvoer van repolist toont alleen ingeschakelde repository's. Met [--all] zie je ook de uitgeschakelde, samen met een status-kolom. Op de testserver stonden alle drie CRB-repository's van AlmaLinux 9 op disabled.
dnf repolist --all | grep -i crbcrb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabledHet aantal pakketten, het mirroradres, de verlooptijd van de metadata en de locatie van het configuratiebestand van één repository controleer je met 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 toonde 3.458 pakketten, en de metadata werd ingesteld om elke 86.400 seconden (één dag) opnieuw te worden gecontroleerd. Het .repo-bestand op de regel [Repo-filename] is het configuratiebestand van deze repository. De opties [--set-enabled] en [--set-disabled] om repository's in en uit te schakelen gebruik je met het commando config-manager van dnf-plugins-core.
5️⃣ Werkgeschiedenis en terugdraaien met het dnf-commando: history
Na een paar keer installeren en verwijderen is het moeilijk bij te houden wat je wanneer hebt veranderd, maar dnf geeft elke transactie (transaction) een nummer en legt die vast in history. Met een pakketnaam erbij zie je alleen de transacties die dat pakket hebben gewijzigd.
dnf history list tmuxID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1In de tot tmux beperkte uitvoer bleef alleen de regel van transactie 51 over, waarin tmux werd geïnstalleerd. Een nummerbereik schrijf je met twee punten, zoals [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 EEHet getal in de kolom [Altered] is het aantal gewijzigde pakketten. Aan het eind van regel 50 stond [EE]: de transactie is voltooid, maar er was uitvoer met waarschuwingen of fouten.
De opdrachtregel, de gewijzigde pakketten en de resultaatcode van één transactie bekijk je met 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 @baseosIn transactie 51 stond bij [Command Line] het uitgevoerde commando install -y tmux precies zoals het was ingevoerd. Onder [Packages Altered] stonden het geïnstalleerde tmux en de repository @baseos, en bij [Return-Code] stond Success. Laat je het nummer weg, dan zie je de meest recente transactie.
Heb je iets verkeerd geïnstalleerd, geef dan een transactienummer mee aan history undo om het omgekeerde van die transactie uit te voeren. rollback zet de pakketstatus terug naar het moment direct na de opgegeven transactie.
dnf history undo 51Transactie 51 was de installatie van tmux, dus undo 51 wordt een omgekeerde transactie die tmux verwijdert.
dnf history rollback 50rollback 50 draait alle transacties na 50 terug, tot en met de laatste, dus het resultaat kan anders zijn dan bij undo 51, dat alleen tmux verwijdert.
Volgens de officiële documentatie stoppen undo en rollback zonder iets te wijzigen als er een pakket is dat niet kan worden teruggedraaid. Ook als wijzigingen die rechtstreeks met rpm zijn gedaan niet in de geschiedenis staan, stoppen ze niet met een fout.
🔲 Simulator van het dnf-commando
In de simulator hieronder kun je zelf search, info, provides, repolist en history invoeren en de uitvoer bekijken. Met yum krijg je hetzelfde resultaat.
🔢 FAQ & aanbevolen content



ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.