Notable changes to DNF

Review the most notable changes to DNF between RHEL 9 and RHEL 10.

Modularity is deprecated

In RHEL 10, the modularity functionality is deprecated and will be removed in a future major release. Therefore, the DNF module command displays a deprecation warning.

Note
In previous RHEL major versions, some Application Streams were available as modules as an extension to the RPM format. In RHEL 10, Red Hat does not intend to provide any Application Streams that use modularity as the packaging technology. Therefore, no modular content is being distributed with RHEL 10.
The repository metadata is not downloaded by default

Previously, when you downloaded a repository’s metadata, the filelists metadata was downloaded by default. The filelists metadata is large and is typically not needed. With this update, this metadata is not downloaded by default, which improves responsiveness and saves disk space. The filelists metadata is also no longer downloaded or updated from repositories and is not loaded into the DNF transaction when you run a dnf command. If the dnf command requires the filelists metadata or includes a file-related argument, the metadata is loaded automatically.

Note

When a package has a filepath dependency that requires filelists metadata to be resolved, the transaction fails with a dependency resolution error and the following hint:

(try to add '--skip-broken' to skip uninstallable packages or '--setopt=optional_metadata_types=filelists' to load additional filelists metadata)
Note
If you want to re-enable the default filelist metadata downloading, you can add the filelists value to the optional_metadata_types option in the /etc/dnf/dnf.conf configuration file.
The DNF debug plugin is removed

The DNF debug plugin, which included the dnf debug-dump and dnf debug-restore commands, is removed from the dnf-plugins-core package. Depending on your scenario, you can use the following commands instead:

  • dnf list --installed or dnf repoquery --installed to list packages installed on your system
  • dnf repolist -v to list repositories enabled on your system
  • dnf install $(</tmp/list) to replicate packages installed on a source system to the target system. For example:
    1. Save a list of packages installed on a source system into the /tmp/list file:
      $ dnf repoquery --installed >/tmp/list
    2. Copy the /tmp/list file to the target system.
    3. Replicate packages on the target system:
      $ dnf install $(</tmp/list)"
The support for the libreport library is removed
The support for the libreport library is removed from DNF. If you want to attach DNF logs to your bug reports, you need to do it manually or by using a different mechanism.
dnf-plugins-core rebased to version 4.7.0
The dnf-plugins-core package is rebased to version 4.7.0 that provides a new python3-dnf-plugin-pre-transaction-actions package. This package includes a new pre-transaction-actions DNF plugin that allows you to run a command upon starting an RPM transaction. For more information, see the dnf-pre-transaction-actions(8) manual page on your system.