(→How To Test: copy info from ReplaceDnfWithDnf5) |
|||
Line 260: | Line 260: | ||
Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze. | Release Notes are not required for initial draft of the Change Proposal but has to be completed by the Change Freeze. | ||
--> | --> | ||
In Fedora 38, DNF5 replaces Microdnf. Main features of DNF5: | |||
- faster | |||
- more features then original Microdnf (builddep, advisory commands, ...) | |||
- keeps the minimal dependency tree and install size like Microdnf | |||
- backward compatible with microdnf | |||
- microdnf symlink (`microdnf install nodejs` works with DNF5) | |||
- commands | |||
- features | |||
- options | |||
Not yet ready features: | |||
DNF5 does not include module command with enable, disable, and reset subcommands. Tey are coming soon. |
Revision as of 09:21, 20 February 2023
Major upgrade of Microdnf
Summary
A major upgrade of Microdnf is the first step in the evolution of package management in Fedora. The new package manager (provided by dnf5 package) has ambitions to provide all major features of DNF without losing its minimal footprint.
Owner
- Name: Jaroslav Mracek
- Email: jmracek@redhat.com
Current status
- Targeted release: Fedora Linux 38
- Last updated: 2023-02-20
- devel thread
- FESCo issue: #2784
- Tracker bug: #2080358
- Release notes tracker: #828
Detailed Description
The new package manager (DNF5) will provide huge improvements and in some cases better behavior then DNF. In the future, the new Microdnf will replace DNF. The new Microdnf will be accompanied by a new library (libdnf5
) and a new DNF Daemon. The DNF5 development was announced on Fedora-Devel list in 2020.
DNF5 features
- Improved user experience
- Improved progress bars
- Improved transaction table
- Transaction progress reports including scriptlets reports
- Support of local rpm for transaction operation
- Great bash completion (better then DNF has)
LIBDNF5 features
- Fully integrated Modularity in LIBDNF workflows
- Modularity is currently supported in DNF and LIBDNF, but it is not fully integrated due to limitations in compatibility with other tools (PackageKit)
- Fully integrated Modularity requires changes in library workflow
- Unified user interface
- DNF/YUM was developed for decades with the impact of multiple styles and naming conventions (options, configuration options, commands)
- Plugins
- DNF plugins are not applicable for PackageKit and Microdnf (e.g. versionlock, subscription-manager), therefore PackageKit behaves differently to DNF
- New plugins (C++, Python) will be available for all users
- Unified behavior
- Removal of functional duplicates
- Decrease maintenance cost
- Shared configurations
- In DNF4 the configuration is only partially honored by PackageKit and Microdnf
- New Daemon
- The new daemon can provide an alternative to PackageKit for RPMs (only one backend of PackageKit) if it will be integrated into the Desktop
- Additional improvements
- Reports in structure (API)
- DNF reports a lot of important information only in logs
- Reports in structure (API)
- Shared cache and improved cache handling (optional, not available in Fedora 38)
- Microdnf, DNF4, and PackageKit use cached repositories on a different location with different cache structure
- Performance improvement
- Loading of repositories
- Advisory operation
- RPM query
- Name filters with a case-insensitive search
- Smart sharing of metadata between dnf, microdnf, daemon (optional, not available in Fedora 38)
- Reduce disk and downloads requirements
- Relocation of internal databases into
/usr
- Make rollback more easy
Downsides
- Relocation of internal databases and different structure of internal databases
- The transaction performed by the new DNF5 will be not visible by DNF
- The transaction performed by DNF or PackageKit will be not visible by the new DNF5
- Packages installed by another packager will be handled as userinstalled
- Consequence => The removal of a package will not trigger removal of unused dependencies
- Compatibility
- To improve user experience and to unify dnf/microdnf behavior we were unable to keep 100% compatibility with former Microdnf in command-line and in behavior
Feedback
Benefit to Fedora
The new DNF5 significantly improves the user experience and in the future it will provide all important features of DNF. It will also keep all advantages of the original MICRODNF, like minimal size required by containers.
The presence of DNF5, LIBDNF5, and DNFDAEMON in the distribution will also allow for a smooth transition of components using dnf
, python3-dnf
, python3-hawkey
, libdnf
, dnfdragora
, and python3-dnfdaemon
to a new library.
- Improved progress bars
- Improved transaction table
- Transaction progress reports including scriptlets reports
- Support of local rpm for transaction operation
- Great bash completion (better then DNF has)
builddep
command without Python on the system
Scope
- Proposal owners:
- Add new package to Fedora [Done]
- Bug 2120661 - Review Request: dnf5 - package management library
- Add Obsoletes of microdnf to spec [Available PR]
- Original microdnf package will be available in Fedora repositories, but microdnf and dnf5 cannot be installed on the same system
- https://github.com/rpm-software-management/dnf5/pull/121
- DNF5 documentation [Done]
- DNF5 API documentation [Done, but improving]
- DNF5 API tutorials [DONE]
- Testing repository [DONE]
- Implement modular filtering [Done, but improving]
The project's github repository is here - https://github.com/rpm-software-management/dnf5/
- Other developers:
- Release engineering: #Releng issue number
- Policies and guidelines: N/A (not needed for this Change)
- Trademark approval: N/A (not needed for this Change)
- Alignment with Objectives:
Upgrade/compatibility impact
The Microdnf package from previous Fedoras will be obsoleted by DNF5 therefore there will be clean upgrade path between Fedoras. DNF will stay on the system unchanged. DNF5 will provide symlink to origininal microdnf therefore there will be CLI compaticility between old Microdnf and new DNF5.
How To Test
Install dnf5
package from https://copr.fedorainfracloud.org/coprs/rpmsoftwaremanagement/dnf5-unstable/:
dnf copr enable rpmsoftwaremanagement/dnf5-unstable
; dnf install dnf5 dnf5-plugins
or from Fedora rawhide:
dnf install dnf5 dnf5-plugins
User Experience
- Improved progress bars
- Improved transaction table
- Transaction progress reports including scriptlets reports
- Support of local rpm for transaction operation
- Great bash completion (better then DNF has)
- New commands and options that are only available with
DNF
Dependencies
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
Documentation
N/A (not a System Wide Change)
DNF5 documentation - https://dnf5.readthedocs.io/en/latest/
Release Notes
In Fedora 38, DNF5 replaces Microdnf. Main features of DNF5:
- faster
- more features then original Microdnf (builddep, advisory commands, ...)
- keeps the minimal dependency tree and install size like Microdnf
- backward compatible with microdnf
- microdnf symlink (microdnf install nodejs
works with DNF5)
- commands
- features
- options
Not yet ready features: DNF5 does not include module command with enable, disable, and reset subcommands. Tey are coming soon.