V edici Fedora 41 bylo navrženo přejít na výchozí balíčkový manažer DNF5. Původně se plánovalo provést přechod na DNF5 ve verzi Fedora 39, ale migrace byla odložena kvůli nedostatku nástrojů. I když úplná parita ve funkčnosti se starým nástrojem dosud nebyla dosažena, vývojáři věří, že distribuce je připravena na migraci a chybějící funkce mohou být implementovány později. Návrh zatím nebyl projednán výborem FESCo (Fedora Engineering Steering Committee), který odpovídá za technickou část vývoje distribuce Fedora. V případě přijetí návrhu budou balíčky dnf, libdnf a dnf-cutomatic nahrazeny nástrojem DNF5 a novou knihovnou libdnf5, a symbolický odkaz /usr/bin/dnf začne ukazovat na spustitelný soubor dnf5.
DNF přišel do distribuce jako náhrada za balíčkový manažer Yum, který byl zcela napsán v jazyce Python. V DNF byly náročné na výkon nízkoúrovňové funkce přepsány a převedeny do samostatných C knihoven hawkey, librepo, libsolv a libcomps, ale kostra a vysoceúrovňové komponenty zůstaly v Pythonu. Projekt DNF5 se zaměřuje na unifikaci stávajících nízkoúrovňových knihoven, přepsání zbývajících komponentů pro správu balíčků v Pythonu do C++ a přenesení základní funkčnosti do samostatné knihovny libdnf5 s vytvořením obalů kolem této knihovny pro zachování Python API.
Použití jazyka C++ místo Pythonu umožnilo odstranit velké množství závislostí, zkrátit velikost nástrojů a zvýšit výkon. Vyšší výkon je dosažen nejen díky kompilaci do strojového kódu, ale také díky vylepšené implementaci tabulky transakcí, optimalizaci načítání z repozitářů a restrukturalizaci databáze (odděleny jsou databáze se stavem systému a historií operací). Nástroje DNF5 jsou zbaveny závislosti na PackageKit, místo kterého je nasazen nový pozadí DNF Daemon, nahrazující funkcionalitu PackageKit a poskytující rozhraní pro správu balíčků a aktualizací v grafických prostředích.
Přepracování také umožnilo implementovat některé vylepšení, která zvyšují uživatelskou přívětivost správy balíčků. Například v novém DNF byla zavedená přehlednější indikace pokroku během provádění operací; byla přidána podpora pro používání místních RPM balíčků při transakcích; byla přidána možnost zobrazování informací generovaných skripty zabudovanými v balíčcích (scriplets) v reportech o provedených transakcích; byla navržena propracovanější systém automatického doplňování příkazů pro bash.
Zdroj: opennet.ru
