Fedora 39 is set to move to DNF5, free from Python components

Ben Cotton, Fedora Program Manager at Red Hat, announced his intention to migrate Fedora Linux to the DNF5 package manager by default. Fedora Linux 39 plans to replace the dnf, libdnf, and dnf-cutomatic packages with the DNF5 toolkit and the new libdnf5 library. The proposal has not yet been reviewed by the FESCo (Fedora Engineering Steering Committee), which is responsible for the technical part of the development of the Fedora distribution.

At one time, DNF replaced Yum, which was written entirely in Python. In DNF, performance-demanding low-level functions were rewritten and moved into separate C libraries hawkey, librepo, libsolv, and libcomps, but the framework and high-level components remained in Python. The DNF5 project aims to unify the existing low-level libraries, rewrite the remaining Python package management components in C ++ and move the basic functionality to a separate libdnf5 library with the creation of a binding around this library to preserve the Python API.

Using C++ instead of Python will get rid of a lot of dependencies, reduce the size of the toolkit, and improve performance. Higher performance is achieved not only through the use of compilation to machine code, but also due to improved implementation of the transaction table, optimization of loading from repositories and restructuring of the database (databases with system state and history of operations are separated). The DNF5 toolkit has been decoupled from PackageKit, with a new background process, DNF Daemon, replacing PackageKit functionality and providing an interface for managing packages and updates in graphical environments.

The rework will also make it possible to implement some improvements that increase the usability of the package manager. For example, the new DNF implements a more visual indication of the progress of operations; added support for using local RPM packages for transactions; added the ability to display in the reports on completed transactions information issued by scripts built into packages (scriptlets); proposed a more advanced input completion system for bash.

Source: opennet.ru

Add a comment