dnf Package Manager For Red Hat Based Systems

The word dnf is actually an acronym for dandified yum. It had replaced yum as the default package manager for the Fedora operating system Fedora 22 on-wards. New dnf Package Manager for Red Hat Based Systems.

dnf package manager is considered to have the following improvements over yum:

  • Better documentation for the API being used
  • Faster dependency resolution for packages
  • Lower memory consumption
  • Run parallel operations

It is worth noting that in spite of having these advantages dnf still lacks some of the features provided. Although all operations that would be performed by a normal user would work without glitches. In this article, we will demonstrate how to install and use dnf as the primary package manager for your system.

Installing dnf Package Manager

Earlier, we could install the dnf package manager along with its dependencies directly from the EPEL repository. But the EPEL package has been removed due to some security vulnerabilities.
We’ll install the package by manually downloading it on to our Centos 7.3 system.

wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm

We’ll use yum localinstall command to install all these RPM’s in a single command making sure there are no dependency issues.

yum localinstall python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm

We used yum localinstall instead of using the rpm command directly because these packages had additional dependencies which resided in the base and EPEL repositories.
Since we used yum, it was able to go out and fetch these dependencies and install them as well.

Let’s check the version of the dnf package manager

[root@sahil-centos ~]# dnf --version
Installed: dnf-0:0.6.4-2.sdl7.noarch at 2017-12-10 16:33
Built : at 2016-10-09 17:18

Installed: rpm-0:4.11.3-21.el7.x86_64 at 2017-05-15 09:26
Built : CentOS BuildSystem <http://bugs.centos.org> at 2016-11-05 23:37

Version of dnf installed using this method was a much older version as compared to the latest one available. We showed you how to install dnf manually because we wanted you to be aware of how to set it up on a Centos system when it was not available in any repository. For, all the examples that we will be working on, we will use a freshly installed Fedora 26 system

Now let’s go through some examples to understand how to use dnf

Check dnf version

To do this we use the dnf –version command

[root@sahil-fedora ~]# dnf --version
Installed: dnf-0:2.5.1-1.fc26.noarch at Sun 10 Dec 2017 12:42:52 PM GMT
Built : Fedora Project at Mon 12 Jun 2017 12:39:07 PM GMT

Installed: rpm-0: at Sun 10 Dec 2017 12:42:43 PM GMT
Built : Fedora Project at Tue 25 Apr 2017 08:07:10 PM GMT

Install a package using dnf package manager

Use the dnf install command followed by the package name. Let’s install the screen rpm to demonstrate

[root@sahil-fedora ~]# dnf install screen
Is this ok [y/N]: y
Downloading Packages:
screen-4.6.2-1.fc26.x86_64.rpm 47 kB/s | 575 kB 00:12
Is this ok [y/N]: y

screen.x86_64 4.6.2-1.fc26


Update a package

Let’s update the dnf package manager itself to demonstrate how to update packages using dnf

[root@sahil-fedora ~]# dnf update dnf

dnf.noarch 2.7.5-2.fc26 dnf-conf.noarch 2.7.5-2.fc26 dnf-plugins-core.noarch 2.1.5-1.fc26
dnf-yum.noarch 2.7.5-2.fc26 libdnf.x86_64 0.11.1-1.fc26 python3-dnf.noarch 2.7.5-2.fc26
python3-dnf-plugins-core.noarch 2.1.5-1.fc26 python3-hawkey.x86_64 0.11.1-1.fc26


Now, let’s verify the currently installed version of dnf

[root@sahil-fedora ~]# dnf --version
Installed: dnf-0:2.7.5-2.fc26.noarch at Sun 10 Dec 2017 01:24:40 PM GMT
Built : Fedora Project at Wed 29 Nov 2017 09:55:03 AM GMT

Installed: rpm-0: at Sun 10 Dec 2017 12:42:43 PM GMT
Built : Fedora Project at Tue 25 Apr 2017 08:07:10 PM GMT

As is evident from the above output, the version of dnf has been updated to 2.7.5

Remove a package

We use the dnf remove command to remove a package followed by the package name. Let’s remove the screen package that we installed in one of our earlier examples

[root@sahil-fedora ~]# dnf remove screen

screen x86_64 4.6.2-1.fc26 @updates 941 k

Transaction Summary
Remove 1 Package

Is this ok [y/N]: y
screen.x86_64 4.6.2-1.fc26


View History

To view information about package installations,  removals and any other package management related transactions performed using the dnf package manager, we use the dnf history command

[root@sahil-fedora ~]# dnf history
ID | Command line | Date and time | Action(s) | Altered
4 | remove screen | 2017-12-10 05:27 | Erase | 1
3 | update dnf | 2017-12-10 05:24 | Update | 8
2 | install screen | 2017-12-10 05:22 | Install | 1 <
1 | | 2017-12-10 04:41 | Install | 627 >E

View available repositories

View list of available repositories, we use the dnf repolist command

[root@sahil-fedora ~]# dnf repolist
Last metadata expiration check: 0:24:51 ago on Sun 10 Dec 2017 05:08:39 AM PST.
repo id repo name status
*fedora Fedora 26 - x86_64 53,912
*updates Fedora 26 - x86_64 - Updates 11,562

Update the system

To update your system to the latest versions of packages installed on the system including the kernel, we use the dnf update command

[root@sahil-fedora ~]# dnf update

Display information about a package

Display information about a package we use the dnf info command.Let’s use it to display information about the screen package

[root@sahil-fedora ~]# dnf info screen

Know Dependencies for a package Before installing

To display dependencies required by a package, we use the dnf deplist command.We’ll now list dependencies for the screen package

[root@localhost ~]# dnf deplist screen

Download a package without installing

We use the dnf download command to download a package.In the below example, we download the screen package via dnf to the /tmp directory by using the –downloaddir option to specify the download location.

[root@sahil-fedora ~]# dnf download  screen --downloaddir=/tmp
Last metadata expiration check: 2:51:48 ago on Sun 10 Dec 2017 05:08:39 AM PST.


In addition to the examples we discussed here, the dnf package manager offers nearly all the features and options that are available with yum. dnf package manager is replacement for yum in upcoming version of Red Hat releases. There is speculation as to the future of the project but we are confident that it may find it’s place in a future release of Red Hat.

Related Articles

YUM Yellow Dog Updater Module

Setup Linux Lab at Home

Install MSSQL Server in Linux


Thanks for your wonderful Support and Encouragement

Sahil Suri

I am a system administrator who loves to learn and share my knowledge with the community. I've been working in the IT industry since 2011.

Leave a Reply

Your email address will not be published. Required fields are marked *