On behalf of the RPM and DNF teams, I would like to highlight changes that
have appeared in our packages in 2020. Thanks everyone for your bug
reports and patches!
RPM
- Support for complex expressions and conditionals with short-circuit logic etc in macros via %[…] and %{expr:…}
$ rpm --eval '%[0 < 1 ? "true" : "false"]'
- Rpm versions as native objects in expressions, eg v”3.1-1″
$ rpm --eval '%[v"1.10" > v"1.2"]'
$ rpm --rebuilddb
- New sqlite3 backend
- More robust than the Berkley DB backend
- SQLite3 has also a more permissive license than the latest BDB
- NDB backend promoted to stable
- Support for migration (reading) from BDB databases without linking to BDB
- New sqlite3 backend
rpmbuild
- Parametric macro dependency generators offer a lightning fast way to generate dependencies where applicable
- Meta dependencies, e.g.
Requires(meta)
allow specifying dependencies without introducing ordering constraints - Dependency generation based on MIME types
DNF
- Introduced the
needs-restarting.d
drop-in directory - Fixed reposync modularity issues, able to sync modular repos correctly
- dnf groups-manager
- yum-groups-manager is back
- Upstream only, to be released in Fedora soon (PR #412)
dnf module switch-to
- Switches the module stream and also performs distro-sync on the new stream content
- New commands for storing a transaction and replaying it on another system
dnf history store/replay
dnf system-upgrade
- The code was refactored to use the store/replay feature in the background
- Landing in Fedora now
- Comps groups are upgraded during the system upgrades
- New commands to upgrade your system on reboot
dnf offline-upgrade
dnf offline-distrosync
microdnf
- New commands for managing modules
microdnf module <enable|reset|disable>
microdnf --config
- Microdnf reads values from dnf.conf
- It is possible to specify a path to the config
microdnf --refresh
- Forces repodata refresh
- Microdnf also honors the metadata_expire configuration option
libdnf
- Many changes to make the DNF features available in microdnf and PackageKit (and Gnome Software)
DNF 5
- The goal is to remove redundant code and make sure all tools built on top libdnf work the same (DNF currently uses a different code path than microdnf and PackageKit)
- We’re behind the plan because we spent the time fixing DNF 4 stack instead (modularity, new features, crashes, etc.)
- There’s a COPR repo with unstable nightlies:
dnf copr enable rpmsoftwaremanagement/dnf5-unstable
dnf install microdnf5
dnf install python3-libdnf5 perl5-libdnf ruby-libdnf
- WARNING: Here be dragons! The software is not ready for general use yet.
- The next steps are:
- Finish the core functionality
- Stabilize the API
- Make the package available in Fedora in parallel with the DNF 4 stack
Just for clarification, is that short for something like “New DataBase” (i.e. sqlite3), or is there yet a third backend in the mix?
Edit: Aaaand, it probably doesn’t do much good replying with questions to “system”, I now realize.
It is this: Changes/NewRpmDBFormat - Fedora Project Wiki
It’s fine: the comments get propagated back to the blog post.