Ben Cotton, che ricopre il ruolo di Fedora Program Manager presso Red Hat, ha annunciato l'intenzione di passare a DNF5 come gestore di pacchetti predefinito per Fedora Linux. In Fedora Linux 39 si prevede di sostituire i pacchetti dnf, libdnf e dnf-cutomatic con gli strumenti DNF5 e la nuova libreria libdnf5. La proposta non è ancora stata esaminata dal comitato FESCo (Fedora Engineering Steering Committee), responsabile della parte tecnica dello sviluppo della distribuzione Fedora.
Nel suo tempo, DNF ha sostituito Yum, che era interamente scritto in Python. In DNF, le funzioni di basso livello esigenti in termini di prestazioni sono state riscritte e separate in librerie C distinte: hawkey, librepo, libsolv e libcomps, ma la struttura e i componenti di alto livello sono rimasti in Python. Il progetto DNF5 è focalizzato sull'unificazione delle librerie di basso livello esistenti, riscrivendo i componenti di gestione dei pacchetti rimasti in Python in C++ e spostando le funzionalità di base in una libreria separata libdnf5, creando attorno a questa libreria un'interfaccia per mantenere l'API Python.
L'uso del linguaggio C++ anziché Python consentirà di eliminare un gran numero di dipendenze, ridurre la dimensione degli strumenti e migliorare le prestazioni. Maggiori prestazioni sono raggiunte non solo grazie all'uso della compilazione in codice macchina, ma anche grazie a una migliore implementazione della tabella delle transazioni, all'ottimizzazione del caricamento dai repository e alla ristrutturazione del database (che separa le basi con lo stato del sistema e la cronologia delle operazioni). Gli strumenti DNF5 sono privi di legami con PackageKit, sostituito da un nuovo processo in background, DNF Daemon, che rimpiazza la funzionalità di PackageKit e fornisce un'interfaccia per la gestione dei pacchetti e degli aggiornamenti negli ambienti grafici.
La ristrutturazione consentirà anche di implementare alcuni miglioramenti che aumentano la facilità d'uso del gestore di pacchetti. Ad esempio, nel nuovo DNF è stata implementata un'indicazione più chiara del progresso delle operazioni; è stato aggiunto il supporto per l'utilizzo di pacchetti RPM locali per le transazioni; è stata aggiunta la possibilità di mostrare nei report sulle transazioni completate informazioni fornite dagli script incorporati nei pacchetti (scriplets); è stata proposta un sistema di completamento automatico dell'input più avanzato per bash.
Fonte: opennet.ru
