Van apt naar dnf: commando's voor Rocky en Fedora
Bekijk het complete overzicht van apt naar dnf commando's voor Rocky Linux, AlmaLinux en Fedora. Leer hoe u repositories beheert en transacties terugdraait in dnf.
Het korte antwoord
De overstap van apt naar dnf is grotendeels een verandering van terminologie. apt install nginx wordt dnf install nginx. apt remove nginx wordt dnf remove nginx. apt update heeft geen direct equivalent, omdat dnf de metadata van repositories zelf ververst wanneer de gecachte kopie verouderd is. Het eenvoudige deel van de vertaling beslaat één scherm. Het nuttige deel bestaat uit de vier bewerkingen die geen directe tegenhanger hebben: het toevoegen van een repository, het ongedaan maken van een transactie, het installeren van een pakketgroep en het uitvoeren van onbeheerde updates.
Elk onderstaand commando is geschreven om op uw eigen server uit te voeren. Lees de transactiesamenvatting die dnf toont voordat u y beantwoordt, zeker bij het verwijderen van pakketten.
Welke distributies gebruiken dnf en welke gebruiken apt
dnf is de pakketbeheerder op Fedora, op Red Hat Enterprise Linux (RHEL) en op de rebuilds van RHEL: Rocky Linux, AlmaLinux en CentOS Stream. apt is de pakketbeheerder op Debian en op alles wat van Debian is afgeleid, wat op een VPS bijna altijd Ubuntu betekent. Er is geen derde antwoord. Als de lijst met images van uw provider Rocky Linux of AlmaLinux aanbiedt, krijgt u dnf. Als deze Ubuntu aanbiedt, krijgt u apt.
Het pakketformaat volgt de tool. dnf installeert .rpm-bestanden en de database is rpm. apt installeert .deb-bestanden en de database is dpkg. Daarom hebben veel installatiepagina's van leveranciers één tabblad voor elke familie, en waarom een .deb die van de releasepagina van een project is gedownload, nutteloos is op Rocky Linux.
Bij welke familie u ook terechtkomt, de eerste keer inloggen vereist hetzelfde werk. De eerste tien minuten op een nieuwe VPS is op beide van toepassing. Alleen het installatiecommando verandert.
Elk apt-commando en het dnf-equivalent
Installeren, verwijderen, zoeken en tonen. Deze gebruiken vrijwel dezelfde termen aan beide kanten.
# apt
sudo apt install nginx
sudo apt remove nginx
apt search nginx
apt show nginx
# dnf
sudo dnf install nginx
sudo dnf remove nginx
dnf search nginx
dnf info nginxapt show is dnf info. Dit is het enige hernoemde werkwoord in de groep, maar één gedrag verschilt en dat brengt gebruikers in verwarring. dnf remove verwijdert ook afhankelijkheden die door niets anders nodig zijn, terwijl apt remove deze geïnstalleerd laat voor een latere apt autoremove. Het verwijderen van één klein hulpprogramma op Rocky Linux kan er dus toe leiden dat een dozijn bibliotheken wordt mee verwijderd. Lees de lijst door voordat u bevestigt.
Metadata verversen, controleren wat er klaarstaat en upgraden.
# apt
sudo apt update
apt list --upgradable
sudo apt install --only-upgrade nginx
sudo apt upgrade
# dnf
sudo dnf makecache
dnf check-update
sudo dnf upgrade nginx
sudo dnf upgradeapt update is verplicht aan de apt-kant, omdat apt de metadata gebruikt die op de schijf staat en zonder problemen een versie installeert die al maanden uit het archief is verwijderd. dnf controleert de leeftijd van de cache vóór elke transactie en downloadt zelf verse metadata, dus sudo dnf makecache is alleen bedoeld om die download nu af te dwingen in plaats van tijdens uw volgende installatie.
apt splitst de volledige systeemupgrade in tweeën, dnf doet dat niet. apt upgrade weigert elk geïnstalleerd pakket te verwijderen, dus het stopt zodra een update vereist dat er een pakket wordt verwijderd. apt full-upgrade is de versie die wel mag verwijderen. dnf heeft die beperking niet, wat betekent dat dnf upgrade het equivalent is van apt full-upgrade, niet van apt upgrade. dnf update is een ouder alias voor hetzelfde commando en werkt nog steeds.
Eén detail is van belang als u dit script: dnf check-update sluit af met status 100 wanneer er updates klaarstaan en 0 wanneer er geen zijn. apt list --upgradable sluit in beide gevallen af met 0, dus scripts moeten de uitvoer ervan parsen.
Lijst wat is geïnstalleerd en achterhaal welk pakket een bestand bezit.
# apt
dpkg -l
dpkg -S /usr/sbin/nginx
dpkg -L nginx
apt-file search /usr/sbin/nginx
# dnf
dnf list --installed
rpm -qf /usr/sbin/nginx
rpm -ql nginx
dnf provides /usr/sbin/nginxDe laatste regel van elk blok beantwoordt een andere vraag dan de bovenstaande. dpkg -S en rpm -qf doorzoeken alleen pakketten die al zijn geïnstalleerd, dus ze beantwoorden de vraag "wat heeft dit bestand hier geplaatst". apt-file search en dnf provides doorzoeken de repositories, dus ze beantwoorden de vraag "wat moet ik installeren om dit bestand te krijgen". apt-file is een afzonderlijk pakket op Ubuntu en vereist sudo apt-file update vóór het eerste gebruik. dnf provides heeft niets extra's nodig, hoewel de eerste uitvoering traag kan zijn omdat dnf de bestandlijsten van de repository downloadt om de vraag te beantwoorden.
Gebruik dnf repoquery -l nginx om de bestanden in een pakket te vermelden dat u nog niet hebt geïnstalleerd. Aan de apt-kant is dat apt-file list nginx.
Autoremove, cache opschonen, een versie vasthouden.
# apt
sudo apt autoremove
sudo apt clean
sudo apt-mark hold nginx
apt-mark showhold
sudo apt-mark unhold nginx
# dnf
sudo dnf autoremove
sudo dnf clean all
sudo dnf versionlock add nginx
dnf versionlock list
sudo dnf versionlock delete nginxversionlock is standaard niet geïnstalleerd op Rocky Linux of AlmaLinux, dus de eerste van die regels faalt met No such command: versionlock op een nieuwe machine. Installeer het eerst met sudo dnf install python3-dnf-plugin-versionlock. apt heeft niets extra's nodig voor apt-mark hold, omdat een hold een dpkg-status is in plaats van een plugin.
Waar de mapping tekortschiet: een repository toevoegen
Dit is het punt waarop Ubuntu-beheerders vaak zoeken naar een commando dat niet bestaat. Er is geen add-apt-repository voor dnf en er bestaan geen Personal Package Archives (PPA's). Een PPA is een dienst die wordt beheerd door Launchpad, en Launchpad is Ubuntu-infrastructuur. In de RPM-wereld bestaat geen vergelijkbare host.
Wat dnf in plaats daarvan gebruikt, is één tekstbestand per repository in /etc/yum.repos.d/, eindigend op .repo.
[docker-ce-stable]
name=Docker CE Stable
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg$releasever en $basearch zijn dnf-variabelen. dnf vult tijdens runtime uw major-versienummer en uw CPU-architectuur in, waardoor hetzelfde bestand werkt op versie 9 en versie 10, en op zowel x86_64 als aarch64.
De meeste leveranciers publiceren dat bestand en instrueren u om het op te halen. De officiële instructies van Docker voor RHEL en de rebuilds daarvan bestaan uit twee commando's:
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoDe eerste regel is noodzakelijk omdat config-manager een plugin is en geen onderdeel van dnf zelf. Slaat u deze over, dan faalt de tweede regel met No such command: config-manager. Niets belet u om datzelfde .repo-bestand handmatig te downloaden met curl naar /etc/yum.repos.d/; het resultaat is identiek. Docker installeren op een VPS behandelt de Debian-kant van dezelfde taak, waarbij de equivalente stap een source list en een signing key naar twee verschillende mappen schrijft.
Het verschil in de structuur bepaalt waar u moet zoeken wanneer een repository niet naar behoren werkt. apt bewaart definities in /etc/apt/sources.list en /etc/apt/sources.list.d/, waarbij signing keys afzonderlijk worden opgeslagen in /etc/apt/keyrings/. dnf bewaart alles in /etc/yum.repos.d/, en de key is een URL binnen het .repo-bestand; er is dus één bestand om te lezen en één bestand om te verwijderen. Nieuwere versies van apt zijn naar dezelfde structuur overgestapt met het deb822-formaat, waarbij één .sources-bestand per repository wordt gebruikt. Als u bent gestuit op de deb822 duplicate sources error op Ubuntu, dan bent u de apt-helft van dit probleem al tegengekomen.
EPEL is het archief waar de meeste handleidingen vanuit gaan
Extra Packages for Enterprise Linux (EPEL) is een Fedora-project dat Fedora-pakketten bouwt voor RHEL en de bijbehorende rebuilds. Het is het dichtstbijzijnde equivalent van een universele PPA in deze wereld, en een zeer groot aantal handleidingen gaat ervan uit dat dit al is ingeschakeld. Als dnf install het antwoord No match for argument geeft voor een pakket dat u op de website van het project zelf kunt zien, is EPEL het eerste wat u moet controleren.
Op Rocky Linux en AlmaLinux:
sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release
sudo dnf makecacheCRB staat voor CodeReady Builder, een repository met bibliotheken die bij de distributie wordt geleverd, maar standaard niet is ingeschakeld. De meeste EPEL-pakketten zijn afhankelijk van onderdelen uit deze repository; het inschakelen van EPEL zonder CRB mislukt op dat moment nog niet. Het mislukt pas later, tijdens de installatie, door onopgeloste afhankelijkheden van een pakket waar u nog nooit van heeft gehoord. Schakel eerst CRB in en dit type fout verdwijnt.
Op RHEL zelf wordt CRB via uw abonnement geleverd in plaats van via config-manager, dus volg voor die stap de eigen EPEL-instructies van Red Hat. Fedora heeft dit niet nodig, omdat de hoofdrepository al de pakketten bevat die EPEL backport. Het beleid van EPEL is om nooit een pakket te vervangen dat door RHEL wordt geleverd, dus het toevoegen van de repository verandert niets aan wat er al op uw server is geïnstalleerd.
dnf history undo, de functionaliteit die apt mist
dnf legt elke transactie vast en kan het omgekeerde van een transactie opbouwen.
sudo dnf history
sudo dnf history info 42
sudo dnf history undo 42dnf history toont een genummerde lijst van transacties met de opdrachtregel waarmee elk proces is gestart. undo construeert de tegenovergestelde transactie: pakketten die met die transactie zijn geïnstalleerd worden verwijderd, en pakketten die zijn geüpgraded worden teruggezet naar de versie die u voorheen had. Dit is de functie die gebruikers van apt het meest missen na de overstap.
Er zijn echter reële beperkingen, en het is verstandig deze te kennen voordat u op deze functie vertrouwt. undo kan alleen een pakketversie opnieuw installeren die nog steeds bestaat in een ingeschakelde repository. Zodra de oude build uit de mirror is verwijderd, mislukt de undo-actie met een 'not-found'-foutmelding. De rollback stopt bovendien bij de pakketdatabase. Een configuratiebestand dat door de upgrade is overschreven, blijft overschreven, en een databaseschema dat door een service bij de eerste start is gemigreerd, blijft gemigreerd. dnf herstelt de bestanden, maar niet uw data.
apt heeft geen equivalent. /var/log/apt/history.log legt weliswaar precies vast wat er is gebeurd, inclusief de opdrachtregel, maar het lezen van een logbestand is niet hetzelfde als het ongedaan maken van een actie. Herstel aan de kant van apt is handmatig: voer apt list -a nginx uit om te zien welke versies het archief nog bevat, gebruik vervolgens sudo apt install nginx=<exact version string> om een versie vast te pinnen, en voeg sudo apt-mark hold nginx toe zodat de volgende upgrade uw correctie niet ongedaan maakt.
Pakketgroepen hebben geen apt-equivalent
dnf kan een benoemde set pakketten in één commando installeren.
dnf group list
dnf group info "Development Tools"
sudo dnf group install "Development Tools"Oudere handleidingen schrijven dnf groupinstall "Development Tools". Dat alias werkt in dnf 4, maar is verwijderd in dnf 5. Daarom is de twee-woorden-variant dnf group install de enige schrijfwijze die overal werkt. Gebruik deze en denk er verder niet over na.
apt kent geen groepen. Het dichtstbijzijnde concept in Debian is een metapakket: een verder leeg pakket waarvan de enige inhoud een lijst met afhankelijkheden is, zoals build-essential. Het praktische verschil is aan het verdwijnen: het verwijderen van een metapakket laat de afhankelijkheden geïnstalleerd totdat u apt autoremove uitvoert, terwijl dnf group remove de pakketten van de groep in dezelfde transactie verwijdert.
unattended-upgrades en dnf-automatic
Beide families bieden een manier om updates te installeren zonder dat er een gebruiker is ingelogd. De tools delen niets behalve hun doel.
Op Ubuntu en Debian is het pakket unattended-upgrades, geconfigureerd in /etc/apt/apt.conf.d/50unattended-upgrades, waar u de bronnen vermeldt waarvan updates mogen worden opgehaald. Het instellen van unattended upgrades op Ubuntu behandelt dat configuratiebestand en de vraag over herstarten die daarbij hoort.
Op Rocky Linux, AlmaLinux en Fedora is het pakket dnf-automatic, en de systemd-timer die u inschakelt bepaalt het gedrag.
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer
systemctl list-timers 'dnf-automatic*'dnf-automatic-install.timer downloadt en past updates toe. dnf-automatic-download.timer downloadt ze en stopt, waarna de installatie aan u is. dnf-automatic-notifyonly.timer rapporteert alleen. Elk van deze units overschrijft de apply_updates-instelling in /etc/dnf/automatic.conf, dus de timer die u kiest is belangrijker dan wat er in het configuratiebestand staat.
Om dit te beperken tot beveiligingsupdates, stelt u upgrade_type = security in /etc/dnf/automatic.conf in. Dat filter is afhankelijk van het feit of uw repositories beveiligings-errata publiceren, dus controleer dit eerst met dnf updateinfo list security. Een leeg resultaat op een systeem met openstaande updates betekent dat de metadata ontbreekt, en security zou in dat geval niets installeren.
Op Fedora heeft dnf 5 de unit hernoemd. Dit is dnf5-automatic.timer, en deze leest hetzelfde /etc/dnf/automatic.conf.
Is yum nog steeds een geldig commando?
Ja, en het doet op zichzelf niets. Op Rocky Linux, AlmaLinux en CentOS Stream is /usr/bin/yum een symbolische link die naar dnf verwijst. Controleer uw systeem als volgt:
ls -l /usr/bin/yum
dnf --versionOude yum-syntaxis verschijnt nog steeds in handleidingen omdat het meeste ervan direct wordt doorgegeven. yum install, yum remove en yum update werken allemaal. Eén gewoonte kunt u echter beter afleren: yum-config-manager bestaat nog steeds als eigen binary op dnf 4-systemen, maar dnf config-manager is de schrijfwijze die in de huidige documentatie wordt gebruikt. Dit is de schrijfwijze die blijft werken wanneer de server wordt gemigreerd naar dnf 5.
dnf 4 en dnf 5: controleer voordat u een commando kopieert
dnf 5 is een herschreven versie en de schrijfwijze van diverse commando's is gewijzigd. Fedora 41 en latere versies leveren dit als dnf. De enterprise-rebuilds zijn trager met de overstap, dus ga niet af op de naam van de distributie. Voer dnf --version uit op uw eigen server en lees de eerste regel; dit nummer bepaalt welke syntaxis u hieronder moet gebruiken.
Het duidelijkste voorbeeld komt van Docker, dat voor beide versies een ander repository-commando publiceert. Op RHEL en de rebuilds daarvan, met dnf 4:
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repoOp Fedora, met dnf 5:
sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repoDezelfde leverancier, dezelfde taak, andere woorden. dnf 5 heeft config-manager veranderd in een tool die op subcommando's is gebaseerd, waardoor de oude vlag --add-repo niet wordt geaccepteerd en u een gebruiks-foutmelding krijgt in plaats van een repository. Een ander commando dat u zult tegenkomen is het inschakelen van een repository: dnf config-manager --set-enabled crb in dnf 4 wordt dnf config-manager setopt crb.enabled=1 in dnf 5.
De keuze die er werkelijk toe doet
Het kiezen van een serverdistributie op basis van alleen de pakketbeheerder is de verkeerde insteek. dnf en apt verrichten hetzelfde werk en de terminologie is in een middag te leren. Wat uw jaar bepaalt, is het release-model achter de repository. Fedora beweegt snel en een specifieke release ontvangt ongeveer dertien maanden na verschijning geen updates meer; dit is prima voor een werkstation, maar lastig voor een server die u niet opnieuw wilt opbouwen. Rocky Linux en AlmaLinux volgen RHEL, waardoor u een ondersteuningsperiode van tien jaar krijgt en pakketversies die bewust stabiel blijven. Ubuntu biedt beide vormen aan, en het verschil tussen Ubuntu LTS en interim-releases op een server is dezelfde beslissing die binnen de wereld van apt wordt genomen.
Sinds augustus 2026 zijn dit allemaal gangbare VPS-images. Kies de gewenste ondersteuningsperiode en leer vervolgens de tien bovenstaande commando's.
FAQ
Wat is het dnf-equivalent van apt update?
Er is geen commando dat u handmatig hoeft uit te voeren. dnf controleert vóór elke transactie hoe oud de gecachte metadata is en downloadt een nieuwe kopie zodra deze is verlopen. Hierdoor ziet dnf install op een server die u een maand niet heeft aangeraakt, nog steeds de actuele pakketten. sudo dnf makecache bestaat wel en dwingt die download af, maar het werkelijke nut is om de vertraging te verplaatsen naar een tijdstip dat u kiest, in plaats van tijdens uw volgende installatie. Het commando dat beantwoordt "wat staat er voor mij klaar" is dnf check-update, wat overeenkomt met apt list --upgradable en afsluit met status 100 wanneer er updates beschikbaar zijn.
Is er een PPA-equivalent op Rocky Linux of Fedora?
Nee. Personal Package Archives zijn een Launchpad-dienst en Launchpad is Ubuntu-infrastructuur, dus add-apt-repository heeft geen vertaling. Het RPM-equivalent is een .repo-bestand in /etc/yum.repos.d/ dat een naam, een baseurl en een gpgkey bevat. Leveranciers publiceren dat bestand voor u, en sudo dnf config-manager --add-repo <url> op dnf 4, of sudo dnf config-manager addrepo --from-repofile <url> op dnf 5, downloadt dit naar de juiste locatie. Voor algemene extra software is het antwoord meestal EPEL, dat u inschakelt met sudo dnf config-manager --set-enabled crb gevolgd door sudo dnf install epel-release.
Kan ik een dnf upgrade ongedaan maken die mijn server heeft beschadigd?
Ja, binnen bepaalde grenzen. Voer sudo dnf history uit om het transactienummer te vinden, sudo dnf history info <id> om precies te zien wat er is gewijzigd, en vervolgens sudo dnf history undo <id>. Het ongedaan maken mislukt als de oudere pakketversie niet langer aanwezig is in een ingeschakelde repository, omdat dnf dan niets heeft om opnieuw te installeren. Het draait bovendien alleen pakketwijzigingen terug. Een configuratiebestand dat door de upgrade is overschreven, of een database die bij de eerste start door een service is gemigreerd, blijft ongewijzigd. apt heeft helemaal geen equivalent commando, enkel het logboek in /var/log/apt/history.log.
Werkt yum nog op Rocky Linux en AlmaLinux?
Het werkt omdat /usr/bin/yum een symbolische link is naar dnf. Bevestig dit op uw eigen systeem met ls -l /usr/bin/yum. Het typen van yum install httpd voert dnf uit, dus oude handleidingen werken meestal nog steeds. Schrijf nieuwe scripts en documentatie met dnf, aangezien de naam yum enkel voor compatibiliteit dient, en geef de voorkeur aan dnf config-manager boven het oudere yum-config-manager-binary.
Waarom wil dnf remove zoveel pakketten verwijderen?
Omdat dnf afhankelijkheden verwijdert die door niets anders nodig zijn als onderdeel van dezelfde transactie, terwijl apt remove deze geïnstalleerd laat totdat u afzonderlijk apt autoremove uitvoert. Een verwijdering die op Ubuntu klein lijkt, kan op Rocky Linux dus een lange lijst tonen. De lijst is meestal correct, maar lees deze door voordat u bevestigt. Als een pakket op die lijst staat dat u wilt behouden, installeer het dan eerst expliciet zodat dnf het registreert als een pakket dat u zelf wilt behouden.