YUM Will Be Replaced With DNF On Fedora 22 And Later Versions
As you may know, DNF is the replacement of popular package manager YUM of Fedora and other RPM based distros. DNF was forked from YUM in January 2012, and available for experimenting since Fedora 18. According to the Fedora development team, DNF is now fully matured and capable of replacing YUM, and it will be the default package manager in Fedora 22 and newer versions.
DNF is the next upcoming 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 it uses libcomps.
DNF and all its dependencies are available in Fedora 18 and later, including the rawhide Fedora.
If you want to test DNF on your Fedora systems, run the following command from your Terminal.
sudo yum install dnf
Note: You don’t have to install it on Fedora 22, because it comes reinstalled with Fedora 22 and newer versions.
dnf [options] <command> [<args>...]
DNF usage is very similar to YUM.
For example, to install a new package using YUM, we use the following command:
sudo yum install <package-name>
Similar to YUM, we can install package using DNF as shown below.
To install a package using DNF:
sudo dnf install <package-name>
To remove a package:
sudo dnf remove <package-name>
To update the system:
sudo dnf update
To upgrade the system:
sudo dnf upgrade
Complete list of DNF Commands
Available commands are:
check-update clean dist-sync distribution-sync downgrade erase group help history info install list makecache provides reinstall repolist search update update-to upgrade upgrade-to
Just like YUM, we can use options to perform a particular action while using DNF commands.
The list of available options are:
--assumeno answer no for all questions
--best 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.
--disableexcludes=[all|main|<repoid>] 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.
--installroot=<path> set install root
--nogpgcheck skip checking GPG signatures on packages
-q, --quiet quiet operation
-R <minutes>, --randomwait=<minutes> maximum command wait time
--releasever=<release> configure DNF as if the distribution release was <release>.
--rpmverbosity=<debug level name> debugging output level for rpm
--showduplicates show duplicates, in repos, in list/search commands
-v, --verbose verbose operation, show debug messages.
--version show Yum version and exit
-y, --assumeyes answer yes for all questions
To see the reference for each command, please visit here.
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
[main] keepcache=0 gpgcheck=1 plugins=0 installonly_limit=3 clean_requirements_on_remove=true
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 my Fedora desktop:
Let me install a package (ex.httpd) using DNF to view how it looks in action.
As 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. Let us wait and see how DNF will perform over YUM and other package managers in near future.
References: DNF Documentation