DNF (programvare)

**DNF** eller **Dandified Yum** er presentasjonslaget til pakkesystemet RPM Package Manager (RPM). Det letter henting og installering av RPMer fra programvarelagre og utfører topologisk sortering (avhengighetsoppløsning).

DNF benyttes av Fedora, Red Hat Enterprise Linux, CentOS, OpenMandriva Lx, OpenSUSE og andre Linuxdistribusjoner. DNF er etterfølgeren til Yellow dog Updater, Modified (yum). 

DNF ble lansert 18. januar 2012. Den 15. januar 2013 ble det innført som en opsjon i Fedora 18. Det ble standard pakkesystem i Fedora 22 den 26. mai 2015. Fedora 41 tok i bruk DNF 5 den 29. oktober 2024.

## Bruk
Programvaren *[[PackageKit]]*, som fungerer som en backend til biblioteket *libdnf*, tilbyr et grafisk brukergrensesnitt for DNF. *Dnfdragora* ble senere utviklet for Fedora 27 som en annen alternativ grafisk frontend for DNF.

Den 30. september 2019 ble DNF et alternativt pakkesystem i Mageia versjon 6. Det er mulig at det blir standard en gang i fremtiden.

I Red Hat Enterprise Linux versjon 8, og de avledede distribusjonene CentOS versjon 8, *AlmaLinux* og *Rocky Linux*, er «yum» et alias for DNF.

### Libsolv
DNF bruker det eksterne biblioteket *libsolv* til avhengighetsoppløsning.

*Libsolv* er implementert i programmeringsspråket C og er lisensiert under den «nye» eller «modifiserte» BSD-lisensen.

*Libsolv* bruker en «tilfredsstillende» algoritme for å løse opp i programvareavhengigheter og lese programvarelagre.

*Libsolv* bruker også en «oppslagsverk-tilnærmelse» for å lagre og hente pakker og avhengighetsinformasjon på en rask måte som krever liten plass.

Tidligere benyttet DNF ikke *libsolv* direkte, men via biblioteket *hawkey*. Dette gjorde det mulig å gi programmeringsgrensesnitt for andre programmeringsspråk enn Python.

I 2017 opphørte *hawkey* å bli videreutviklet. All dens funksjonalitet ble integrert i *libdnf*.

### libdnf
*Libdnf* er et høynivå programmeringsgrensesnitt for DNF og underliggende biblioteker.

Det er implementert i programmeringsspråkene C og C++ og lisensiert under GNU Lesser General Public License 2.1+

## Utvikling
### Yellowdog Updater, Modified

DNF har sin opprinnelse i Yellowdog UPdater, som ble utviklet av Terra Soft Solutions i årene 1999–2001, som et grafisk installasjonsprogram for Yellow Dog Linux. Yellowdog UPdater ble oppdatert og videreutviklet, og i juni 2002 ble programmet lansert som Yellow dog Updater, Modified (YUM). Dette pakkesystemet ble brukt på Red Hat Linux versjon 8 «psyche» og versjon 9 «shrike». Og fra Red Hat Linux fant det veien videre til Fedora og Red Hat Enterprise Linux.

Det som etterhvert ble et økende problem for YUM, var dårlig ytelse, høyt minnebruk og treghet i dens iterative avhengighetsoppløsning.

### DNF 1
Resultatet ble at Red Hat utviklet DNF eller *Dandified Yum*, en «dandifisert» utgave av YUM. «Dandifisert» betyr i denne sammenhengen noe utmerket i sin klasse. DNF ble lansert 18. januar 2012. Den 15. januar 2013 ble det innført som en opsjon i Fedora 18 «Spherical Cow». Det ble standard pakkesystem i Fedora 22 den 26. mai 2015.

### DNF 2
DNF 2 ble lansert 20. juni 2016.

### DNF3 - DNF4
DNF 3 ble lansert 22. mars 2018 og DNF 4 ble lansert i 2022.

### DNF 5
DNF 5 tilbyr en konsistent brukeropplevelse på tvers av servere, arbeidsstasjoner og beholdere, og er et felles pakkesystem på disse plattformene.

Kommandoer for DNF 4, YUM og MicroDNF erstattes av et felles grensesnitt, hvor konfiguasjonsfiler blir delt. API-brukere vil støte på enhetlig kodestil og navnekonvensjoner. Ulike skriptspråkgrensesnitt leveres fra en enkelt kilde ved hjelp av SWIG-bindinger (Simplified Wrapper and Interface Generator). Tidligere foregikk bindingene via CPython og SWIG.

En konsekvens er lavere vedlikeholdskostnader. Mange funksjonelle duplikater i DNF 4 er fjernet, delvis fordi funksjonene i  PackageKit og andre biblioteker er integrerte i et felles *libdnf*-bibliotek. Tilleggsmoduler (programvareutvidelser) blir integrert i samme programvarepakke som inneholder kjernefunksjonaliteten.

En annen konsekvens er høyere ytelse. Innlasting og nedlasting av metadata fra programvarelageret skjer nå samtidig. Pakkespørringsoperasjoner, inkludert behandling av mange kommandolinjeargumenter, har blitt betydelig raskere.

En tredje virkning er et redusert avtrykk. DNF 5 har flere funksjoner og krever ikke avhengighet av Python. Det reduserer også antall programvareadministrasjonsverktøy ved å erstatte både DNF 4 og microDNF.

Installasjonsstørrelsen på DNF 5 i en tom beholder er ca. 60% mindre enn DNF 4. Størrelsen på DNF 5 er omkring 114 MB, mot 165 MB i DNF 4.

DNF 4, microDNF og PackageKit brukte sitt eget hurtigminne, noe som har ført til en betydelig redundans av metadata. DNF 5 benytter et enkelt hurtigminne for metadata, og eliminerer denne redundansen.

Fedora 41 tok i bruk DNF 5 den 29. oktober 2024.

## Referanser


## Eksterne lenker
*