Brief: This article guide explains the nature and differences between the Yum package manager and the DNF package manager in Fedora and Red Hat-based Linux distributions.
The first step to being a Linux user is choosing a preferred Linux operating system distribution. A key identifier in each Linux distribution is the package manager used to perform operating system tasks like installing, updating, upgrading, and removing packages or software collections.
Some popular package managers include APT (Advanced Packaging Tool) for Debian and Ubuntu distributions, ZYPPER for SUSE Linux Enterprise, and PACMAN for Arch Linux distribution.
When it comes to red hat-based Linux distributions like RHEL, Rocky Linux, and AlmaLinux, users are able to interact with both DNF and YUM package managers to accomplish common operating system tasks.
However, we need to air out the differences between these two package managers and why they are allowed to co-exist with one another.
Differences Between YUM and DNF Package Managers
Both YUM (Yellowdog Updater, Modified) and DNF (Dandified YUM) borrow the RPM (Red Hat Package Manager) package format to perform package management tasks like installing, updating, and removing packages.
The onset of Fedora 18 saw the introduction of DNF as a replacement for YUM. DNF came into the picture because of transparent YUM limitations that warranted a modern and feature-rich alternative.
YUM’s Limitations in Comparison to DNF
Some of YUM’s limitations in comparison to DNF include:
- Performance and dependency resolution – DNF resolves dependency issues much faster than YUM.
- Package metadata – With DNF, users can use the package manager’s database to store additional package info (package metadata). This feature is absent in YUM.
- Transaction rollback – With DNF, a user is able to undo changes implemented by a package manager (rollback transactions). This feature is unavailable in YUM.
- Database format – Compared to YUM, DNF’s database format is faster and more efficient.
- Handling multiple package versions – DNF supports the installation of multiple versions of packages whereas YUM does not support this functionality.
We can therefore summarize DNF’s improvement to YUM’s limitation with the following bullet points:
- Support for rollback transactions.
- Support for package metadata.
- Better performance and dependency resolution.
- New, faster, and more efficient database format.
- Better multiple version handling mechanisms for packages.
DNF vs Yum – Package Management
When it comes to basic package management routines, these two commands adhere to the same syntax as demonstrated below:
Installing a Package
$ sudo yum install package_name $ sudo dnf install package_name
Update Installed Packages
$ sudo yum update $ sudo dnf update
Removing a Package
$ sudo yum remove package_name $ sudo dnf remove package_name
Searching a Package
$ yum search package_name $ dnf search package_name
Displaying Package Info
$ yum info package_name $ dnf info package_name
On the other hand, the following DNF commands are not equivalent to YUM:
Rolling Back Transactions with DNF
Both DNF and YUM commands can be used to display a list of already executed transactions (command-line history). However, only DNF is capable of undoing a command execution from the history list based on the command/transaction ID.
$ dnf history $ sudo dnf history undo <transaction_id>
Based on the above screen capture, the command ‘update‘ for system update is identified by transaction ID ‘4‘ hence this transaction is rolled back by the command:
$ sudo dnf history undo 4
Rolling Back Transactions with YUM
It is not the same case with YUM. The following screenshot confirms that the transaction rollback feature is not supported by YUM.
$ yum history $ sudo yum history undo <transaction_id>
Here will try to roll back transaction ID 2 for installing the curl package and end up with the error “cannot find rpm nevra” which suggests that the curl package does not exist when it actually does.
$ curl -V
Installing Multiple Versions of a Package
To install multiple versions of a package named foo, we would run:
$ sudo dnf install foo-1.0 foo-2.0
Displaying Package Dependencies
$ dnf repoquery --requires tree $ yum deplist tree
Overall, DNF is an up-to-date YUM version with rich features and a better performance spectrum. These key differences confirm that DNF is evolving and is a much more preferred package manager in comparison to YUM.
Also, newer versions of RPM-based Linux distributions are already doing away with (deprecating) the usage of the YUM package manager. It is therefore recommended to start adapting to the feature-rich nature of DNF for future package management pursuits.
The yum command is just a symlink to dnf command now. So there is absolutely no difference between the two commands or how you use them.
@Michale,
You are absolutely correct, but there are a few limitations between yum and dnf which are discussed in this article…