DNF: An Experimental Replacement For YUM

Share this Article: Facebook47Google+10Twitter14LinkedIn1Reddit18Pinterest0StumbleUpon1Digg

What is DNF?

DNF is a package manager which is an experimental replacement for YUM. It is based on yum and libsolv. This is a preview of the next major version of Yum. It does package management using RPM, libsolv and hawkey libraries. For metadata handling and package downloads it utilizes librepo. To process and effectively handle the comps data we have libcomps.

What is YUM?

As you may know, YUM (Yellowdog Updater, Modified) is a popular package manager for RPM based systems. It automatically computes dependencies and figures out what things should occur to install packages. It makes it easier to maintain groups of machines without having to manually update each one using rpm. Yum has a plugin interface for adding simple features. Yum can also be used from other python programs via its module interface.

The rise of DNF project

After the unfortunate death of the YUM project lead developer Mr. Seth Vidal on July 8, 2013, DNF project got much attention on Fedora team. You can read news about the loss of Seth Vidal here. Probably, YUM will be abandoned and completely replaced by DNF in future Fedora releases. But this is my personal assumption only, the final decision is up to Fedora development team.

DNF is only approved for inclusion in Fedora 18 and later, as it does not have feature-parity with Yum and is still in heavy development. It will live in parallel to YUM, and  Yum will remain the default package manager, and may for several more releases.

The latest version DNF 0.4.7 has been released on November 8, 2013.

Install DNF

DNF and all its dependencies are available in Fedora 18 and later, including the rawhide Fedora.

To install DNF on Fedora 18 and later, run the following command in Terminal:

sudo yum install dnf



dnf [options] <command> [<args>...]

DNF usage is very similar to YUM.

For example, to install a new package using YUM, we enter the following command:

sudo yum install <package-name>

Just like YUM, we can install package using DNF as the way we do using YUM.

To install a package using DNF:

sudo dnf install <package-name>

To remove package:

sudo dnf remove <package-name>

To update system:

sudo dnf update

To upgrade:

sudo dnf upgrade

DNF Complete list of available Commands

Available commands are:



Just like YUM, we can use options to perform a particular action while using DNF commands.

The list of available options are:

     answer no for all questions
     Try the best available package versions in transactions.
-C, --cacheonly
     Run entirely from system cache, don’t update cache
-c <config file>, --config=<config file>
     config file location
-d <debug level>, --debuglevel=<debug level>
     Debugging output level.
     Disable the config file excludes. Takes one of three options:
          - all, disables all config file excludes
          - main, disables excludes defined in the [main] section
          - repoid, disables excludes defined for the given repo
-e <error level>, --errorlevel=<error level>
     Error output level.
-x <package-spec>, --exclude=<package-spec>
     Exclude packages specified by a name or a glob from the operation.
-h, --help
     Shows the help.
     set install root
     skip checking GPG signatures on packages
-q, --quiet
     quiet operation
-R <minutes>, --randomwait=<minutes>
     maximum command wait time
     configure DNF as if the distribution release was <release>.
--rpmverbosity=<debug level name>
     debugging output level for rpm
     show duplicates, in repos, in list/search commands
-v, --verbose
     verbose operation, show debug messages.
     show Yum version and exit
-y, --assumeyes
     answer yes for all questions

To see the reference for each command, please visit here.

DNF Configuration

By default, DNF uses the global configuration file at /etc/dnf/dnf.conf and all *.repo files found under /etc/yum.repos.d directory.

The contents of dnf.conf file.

sudo nano /etc/dnf/dnf.conf

There are two types of sections in the configuration files: main and repository.

The main section defines all global configuration options. There should be only one main section.

The repository sections define the configuration for each (remote or local) repository.

For more details about DNF Configuration, please refer here.

DNF in Action On Fedora 19

Let me install a package (ex.httpd) using DNF to view how it looks in action.

root@localhost:~_002As you see in the above picture, there is nothing change and difficult to install a package using DNF. We replaced the word “yum” with “dnf”. The remaining parts exactly same as the way we use in YUM.


Among popular package managers such as APT-GET, YUM and ZYPPER, DNF is very new to the show. As i noted above, DNF isn’t mature yet to fully replace the YUM package manager. It is under heavy development right now and we have to wait for sometime to know what it is going to offer us over YUM.

References: DNF Documentation

For questions please refer to our Q/A forum at : http://ask.unixmen.com/

Share this Article: Facebook47Google+10Twitter14LinkedIn1Reddit18Pinterest0StumbleUpon1Digg