How to Use DNF Package Manager in Linux? [A Complete Guide]

LINUX
FUNDAMENTALS
A Complete Guide for Beginners Enroll Course Now

DNF is the successor of YUM which refers to Dandified YUM and it is the next generation of YUM. This package manager is used in RPM-based Linux distribution. As it is the modern version of Yum, it shows better performance and resolution. In this article, I will discuss the dnf package manager in detail.

Table of Contents

What is DNF Package Manager in Linux?

Dnf is the package manager that handles packages and helps the user to efficiently manage the Red Hat-based distributions. As it builds on top of Yum it provides many additional functions and facilities. The package manager uses the dnf tool that makes the installation, removal, and upgrade of the packages easier.

The Key Components of DNF

The users who use the package manager for the first time should know about the key components of dnf. Here I have shown the modules:

  • Usage: Used in modern Red Hat-based distributions, default package management tool.
  • File extension: The file extension for the dnf package manager is .rpm.
  • Key Features: Faster performance, Parallel downloading, rich command line interface, Enhanced dependency resolution.
  • Dependency handling: Third-party dependency solver, dnf calculates and resolves dependencies and conflict resolution.

Why Use the DNF Package Manager?

Some key features make DNF the most usable package manager. Below I will show some of them:

  • Use less memory while synchronizing metadata.
  • Use fully documented API.
  • It has a modular design.
  • Efficient network.
  • Improved dependency solver algorithm.
  • More integrated plugins with core.
  • Automatic bug reporting.

Package Management With “dnf”

Managing packages means installing, removing, searching, handling a repository, and showing information about a package. Below I will illustrate the management of packages with dnf.

Downloading an RPM Package in Linux

If you want to download an RPM package file without installing it then you can copy the following command:

sudo dnf download google-chrome-stable
EXPLANATION
  • sudo: Permits administrative privileges.
  • dnf: Package management system in Red Hat that provides a high-level front-end command interface.
  • download: Command to download the following package.
  • google-chrome-stable: Package that I want to download.

Download a package with dnf

I  have chosen the Google Chrome-stable, you can choose any package according to your liking.

Shown the downloaded file

From the above image, you can see the package which I have downloaded.

Searching a Package With “dnf”

When one needs to search a package in the repository he can locate the package with the search command. You can copy the following command on Redhat to search for a package:

sudo dnf search totem
EXPLANATION
  • search: Locate a package in the repository.
  • totem: The package that I searched for.

Search for a package with dnf

You can see all the packages whose names exactly match with totem.

Displaying Package Information

Sometimes you need to view the package information which you can see with the info option. With these options, the user can know the architecture, version, repository, and license. And also know about the package from the package description. To show the package information, copy the following command in Redhat :

sudo dnf info totem
EXPLANATION
  • info: Show the information of a package.
  • totem: The package whose information I want.

Displays the information of a package with dnf package manager

Installing Packages With “dnf”

The common function of any package manager is to install a package. Dnf shows variety in installation. With dnf, you can install single packages, multiple packages, and packages with binary names. Here you can see some of the installation commands below.

A. How to Install a Single Package

Firstly you can install a single package. To install a single dnf package you have to use the install option. Here I have used the httpd package You can use any package according to your liking. To practice, you can copy this command:

sudo dnf install httpd
EXPLANATION
  • dnf: Package management system in Red Hat that provides a high-level front-end command interface.
  • install: Command install the following package.
  • httpd: The package that I want to install.

Install a package with dnf

To confirm the installation you have to type Y and then press ENTER.

Press y and enter to confirm installation

Shows the installation process is completed

So, the installation has been completed with dnf. If you want to skip the confirmation section you can use the -y option in the command which means yes to all the installations.

B. How to Install Multiple Packages

The user can install multiple packages using dnf. You can copy the following command in RedHat.

sudo dnf install samba totem nginx
EXPLANATION
  • samba, totem, nginx: the packages I want to install.

Installing multiple packages with dnf

Here I have installed the packages that I needed. You can choose according to your preference.

C. How to Install a Specific Version of a Package

If you want to install a specific version, you can do this with dnf. To do this you can copy this command:

sudo dnf install samba-4.17.5-103.el9_2
EXPLANATION
  • samba-4.17.5-103.el9_2: The specific version of a package that I want to install.

A specific version of package is installed with dnf package manager

Here I installed this version of this package You can install packages according to your liking.

D. How to Install RPM Packages

Sometimes users need to install a file that has already been downloaded. So to install a file locally with dnf you can use the following command:

sudo dnf install /home/oishi/Downloads/google-chrome-stable-116.0.5845.179-1.x86_64.rpm
EXPLANATION
  • /home/oishi/Downloads/google-chrome-stable-116.0.5845.179-1.x86_64.rpm: The path where the downloaded file is located.

A rpm file package is installed with dnf

To install a RPM file locally one must use the complete path where the file is located.

E. Installing a Package By its Binary Filename

You can install a package with its binary name. You can copy this command on RedHat:

sudo dnf install /usr/sbin/lvm
EXPLANATION
  • /usr/sbin/lvm: The binary name of the package.

Install a package with its binary name with dnf

Finding Which Package Owns a File

If you want to see what packages a file owns then you can use the provided option. Here you can use the command that is shown below:

sudo dnf provides named
EXPLANATION
  • provides: Displays which packages a file owns.

Checking a file with dnf package manager which packages it contains

Replace the named that has been shown in the image with the full pathname like below:

sudo dnf provides /path/to/file

Remove Packages

Sometimes you install a package but later you do not need the file anymore. So you can uninstall or remove it with the remove option. In this section, I have shown how to remove a single package and unnecessary packages.

1. Remove a Single Package

To remove a single package with RedHat you can copy the following command:

sudo dnf remove samba
EXPLANATION
  • remove: Remove the desired package from the repository.
  • samba: The package that I want to remove.

Command to remove a package with dnf

To confirm the removal you have to press Y and then ENTER.

Confirm the removal by pressing Y and ENTER

So, with the remove option, I have uninstalled the package. After the uninstallation process complete text has been displayed in the terminal.

Displays completed when the package removed

Like installation, you can remove multiple packages with dnf. To uninstall multiple packages you can copy the following command:

sudo dnf remove totem samba httpd

2. Remove All Unnecessary Packages

There are many unnecessary packages installed in the system as dependencies which creates potential issues and also uses disk space. To uninstall any dependency packages that are not required by any installed packages, in Red Hat, you can copy this command:

sudo dnf autoremove
EXPLANATION
  • autoremove: Uninstall any dependency that is not required by any installed packages.

Remove all unnecessary packages with dnf package manager

From the image, you can see I have removed all the unused or unrequired dependencies with the command.

Reinstall Package

When you want to install the failed packages that have been not installed you can reinstall the package with the following command:

sudo dnf reinstall samba
EXPLANATION
  • reinstall: Reinstall the failed packages.
  • samba: The package that I want to reinstall.

Reinstall a package with dnf

If you reinstall an already installed package then it will reinstall the newer available version.

Show List of Packages With “dnf”

Sometimes users need to know the list of packages, the list of installed packages and whether a specific package has been installed or not. So I will show this list of packages with dnf command below:

A. How to Show the List of All Packages

If you want to see the list of all packages that are available in the system you can copy the following command:

sudo dnf list
EXPLANATION
  • list: Shows all the packages in the system.

List all of the available packages with dnf

With this command, you will see a huge list of packages as it shows all the installed, available installation packages on the system.

B. View List of All Installed Packages Using “dnf”

If you want to see the RPM packages that you have installed locally then copy the following command on RedHat:

sudo dnf list installed
EXPLANATION
  • list installed: List of installed packages.

List the packages which have been installed with dnf

From the image, you can see the rpm packages installed locally.

C. Check a Specific Package Whether It is Installed or Not

When you need to see if a specific package is installed or not then you can copy the following command:

sudo dnf list installed | grep totem
EXPLANATION
  • (|) pipe: Creates a unidirectional data channel that can be used for interprocess communication.
  • grep: Command-line for searching a file with a particular pattern.
  • totem: The package name that I want to see.

Displays a specific package is installed or not with dnf

Update and Upgrade Packages

One important function of a package manager is to update the packages. With dnf, you can update the full system and also single and multiple packages. Here below I have shown how to use the update command:

1. How to Check an Update

Firstly if you want to see the packages that you need to update then check the update list with the check option. It will show the list of available packages from the enabled repository. To see the list you can copy the following command:

sudo dnf check-update
EXPLANATION
  • check-update: Shows the list of upgradable packages.

Check the upgradable packages with dnf

2. Update All Packages Using “dnf”

When you want to update all the packages you can copy this command in Redhat:

sudo dnf update
EXPLANATION
  • update: Command to make packages up to date.

Update all the packages with dnf package manager

Here I update all the available packages with the latest version. From the image, you can see with dnf, the upgrade is also done with the update command.

Confirming the upgradation with Y and press enter

From the image you can see, to confirm the download of the upgraded version, you have to press the Y button. Then you have to press ENTER.

3. Update a Specific Package

When you want to update a single or multiple packages you can copy the following command with dnf in RedHat:

sudo dnf update totem httpd
EXPLANATION
  • totem, httpd: The packages that I want to update.

Update a specific package with dnf

System Upgrades With DNF System Plugin

To upgrade your RHEL system with dnf you can do this with the system upgrade plugin. Firstly you have to upgrade all the packages to the latest version. It is an important part of system upgrade. So by the following command, you can upgrade the packages:

sudo dnf upgrade --refresh
EXPLANATION
  • upgrade: Command to upgrade to the new version of packages.
  • – -refresh: Forces to immediate upgrade.

Upgrade the pacakges and use refresh with dnf package manager

After upgrading all the packages you must install dnf-plugin-system-upgrade if it is not available. You can copy the following command:

sudo dnf install dnf-plugin-system-upgrade
EXPLANATION
  • install: Command install the following package.
  • dnf-plugin-system-upgrade: A plugin to upgrade the system to the current release version.

To upgrade the system install system upgrade

After the installation, you can download the upgraded version to upgrade the system. Here I have shown the command:

sudo dnf system-upgrade download --releasever=38
EXPLANATION
  • system-upgrade: Upgrade to a newer version to increase functionality.
  • download: Command to download the following version.
  • – -releasever=38: The newer version of the system.

Upgrade the system with downloading the new version

You can choose the number of the latest version that you want to download. After the upgrade, you must reboot your system.

Language Support Using DNF

Dnf provides language support. With dnf, you can install and remove language support. Below I have shown how to install and remove language support.

A. Install Language Support

To install language support you have to use langpacks with the language name code. Here I have installed Danish language whose language code is da. To install language support you can copy the following command:

sudo dnf install langpacks-da
EXPLANATION
  • langpacks: The language package.
  • -da: The language support I installed (da stands for Danish).

Install language support with dnf

B. Uninstall Language Support

To uninstall language support you can copy the following command on RedHat:

sudo dnf remove langpacks-da
EXPLANATION
  • remove: Remove the desired package from the repository.
  • langpacks: The language package.
  • -da: The language support I installed (da stands for Danish).

Remove language support with dnf

Core Plugins of the Package Manager

If you want to increase the functionality of dnf then you can install the core plugins. Here I have used the noarch plugin. You can install the core plugin with the following command:

sudo dnf install dnf-plugins-core-4.3.0-5.el9_2.noarch
EXPLANATION
  • dnf-plugins-core-4.3.0-5.el9_2.noarch: Package file name.
  • dnf-plugins-core: Package name.
  • 3.0: Package version.
  • el9_2:Package release.
  • noarch: Package architecture.

Install core plugin with dnf

If you want to install a third-party plugin then you can use the following command syntax replacing the plugin name with your preferred one:

sudo dnf install dnf-plugins-extras-[plugin name]

Excluding Packages From Transactions

Sometimes you need to exclude any specific package from the transaction. So to exclude any package from a transaction like an upgrade you can copy the following command:

sudo dnf upgrade --exclude=kernel
EXPLANATION
  • – -exclude: Remove a specific package from a function.
  • kernel: The package that I exclude.

Excluding a package while upgrading

Some packages include bugs while upgrading. So it is important to remove the package from upgrading.

You can exclude multiple packages at the same time with space. To exclude multiple packages you can copy this command:

sudo dnf upgrade --exclude=kernel --exclude=httpd
EXPLANATION
  • upgrade: Command to upgrade to the new version of packages.
  • exclude: Remove a specific package from a function.
  • kernel, httpd: The packages I want to exclude.

Excluding multiple packages while upgrading

You can also exclude a package by changing the configuration file. It is permanently excluded until you again manually change the configuration file. You can add the packages that you want to exclude in the /etc/dnf/dnf.conf file. To open the configuration file you can copy the following command:

sudo nano /etc/dnf/dnf.conf
EXPLANATION
  • nano: A common tool for creating a new file, quickly picking into a file, and editing it.
  • /etc/dnf/dnf.conf: Configuration file where utilities and configuration information are stored.

Exclude a package permanently

After opening the file you can add the following line to the file:

exclude= httpd php mysql in /etc/dnf/dnf.conf configuration file.

I have excluded these packages you can add any packages according to your need.

Writing the excluded file name using nano

After writing the name of the excluded packages you must save the edit with the write-out option and press CTRL+O and ENTER. And lastly, CTRL+X to exit from the page.

Using the DNF Versionlock

In the transaction, if you want to limit the amount of files you can use version lock. The versionlock option will lock a package version and will not be upgraded while updating the system. Firstly to lock a version you have to install the version lock command. So you can copy the following command:

sudo dnf install 'dnf-command(versionlock)'
EXPLANATION
  • dnf: Package management system in Red Hat that provides a high-level front-end command interface.
  • install: Command install the following package.
  • versionlock: Plugin which takes names and versions and excludes the packages.

Installing versionlock with dnf

Then I used the query option to see which package version is available of the package kernel. You can this command from below:

sudo rpm -q kernel
EXPLANATION
  • rpm: Red-hat package manager to install, uninstall, and manage software packages.
  • -q: Query command to retrieve information using rpm command.
  • kernel: The package name.

Showing which version is locked with rpm query

From the image, you can see there are two versions present in the system. Here I have shown which version I will lock. To lock this version you can use the following command:

sudo dnf versionlock add kernel-5.14.0-284.25.1.el9_2.x86_64
EXPLANATION
  • versionlock: Command to lock a specific version.
  • add: Subcommand for versionlock to which add the following package into versionlock.
  • kernel: Package name.
  • 14.0: Package version.
  • 25.1.el9_2: Package release.
  • x86_64: Package architecture.

Adding a package version into version lock

From the image, you can see I have shown using the following command whether it is locked or not:

sudo dnf versionlock list
EXPLANATION
  • list: List of locked package versions.

And you can see it shows the locked version and it is locked.

Now if you want to delete the version that you have locked before then copy the following command:

sudo dnf versionlock delete kernel-0:5.14.0-284.25.1.el9_2.*
EXPLANATION
  • delete: Command to remove the locked version.
  • kernel-0:5.14.0-284.25.1.el9_2.*.

Delete the previously locked version

After deleting the version if you want to check whether it is deleted or not then use the following command:

sudo dnf versionlock list

After deleting the versionlock

So no version is locked anymore.

Managing Package Groups Using “dnf”

If you can install, or remove a package group then it is easy and efficient to manage the system as with a single command you can install the whole software group. Dnf provides the feature of the software group like Server with GUI and network server. Below I have shown how to manage a software group.

1. List All Package Groups

If you want to see all the available software groups then you can copy the following command:

sudo dnf grouplist
EXPLANATION
  • grouplist: Display all the available and installed group list.

List the available software packages

You can see all the available environments, groups and install environments and groups.

2. List All Packages in a Group

If you want to see the packages in a software group you can do this with dnf. Firstly I have shown which group I want to see. For that, you have to use the following command:

sudo dnf grouplist

Selecting a group of packages that I want to see

Here I want to see the packages inside the system tools group. So for that, I have used the following command:

sudo dnf groupinfo "System Tools"
EXPLANATION
  • groupinfo: Show the information of a group of packages.
  • System Tools: A group of packages.

Information of a software group with dnf

From the image, you can see there are default and optional packages inside the System Tools group.

3. Installing a Package Group

Installing a group of packages with a single command has solved many problems if you want to install the items in the system tools group then you have to install many libraries and packages which is very difficult. But with the group option, you can install them with a single command:

sudo dnf groupinstall "SystemTools"
EXPLANATION
  • groupinstall: Install the following group of packages.
  • System Tools: The group of packages that I want to install.

Install the group of software with dnf

You can see from the image all the packages have been installed with a single command.

4. Removing a Package Group

If you want to remove or uninstall a group of packages then you can copy the following command:

sudo dnf groupremove "System Tools"
EXPLANATION
  • groupremove: Remove the following group of packages.
  • System Tools: The group of package that I want to remove.

Remove a group of software with dnf

So, in dnf by using the group option you can install and remove a group of packages easily.

Manage Repository With “dnf”

You can handle repositories with dnf. First I want to see the repository list. To display the repository list you can copy the command:

sudo dnf repolist
EXPLANATION
  • repolist: Show the current repository.

Showing the repository list

From the image, you can see the current repository list.

A. Add a Repository

Users can add a new repository by two methods:

  1. Adding [repository] manually.
  2. Adding repo file.

You need config-manager to add a repository and have to add the repository URL after the add-repo option. You can copy the following command:

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
EXPLANATION
  • config-manager: Works on configuration of the repository.
  • – -add-repo: Add the following url repository to the current repository.
  • https://download.docker.com/linux/centos/docker-ce.repo: The Repository url which I want to add.

Adding a repository with dnf

After adding the repository, you can see whether it is added or not by the repolist. Use the following command to see the list:

sudo dnf repolist

Showing the repo list after adding a new repository

From the image you can see the new repository is added.

B. Enable a Repository Using “dnf”

You can see which repository is enabled and which one is not by using the following command:

sudo dnf repolist all
EXPLANATION
  • repolist all: Show the current repo list with enabled and disabled repositories.

Showing the repolist with enable and disable repositories

Here I will enable the repository that I marked in the image below.

The repository which I want to enable

If you want to enable the repository you can use the following command:

sudo dnf config-manager --set-enabled zfs
EXPLANATION
  • – -set-enabled: This option will enable the following repository.
  • zfs: The repository I want to enable.

Enable a repository with dnf

Showing the newly enabled repository

After enabling the repository if you see the repolist you can see that the repo has been enabled.

C. Disable a Repository

Firstly to disable a repository, I will see the repository list. From the image, you can see I want to disable the repository that I added before.

Showing a enable repository which I will disable

So, to disable the repository from the directory you can copy the command:

sudo dnf config-manager --set-disable docker-ce-stable
EXPLANATION
  • – -set-disable: This option will disable the following repository.
  • docker-ce-stable: The repository I want to disable.

Command to disable the following repository

Showing the disabled repository which I have done recently

From the image, you can see to disable a repository you have to use the disable option and the repository name.

2 Examples to Install Popular Apps Using “dnf” Package Manager

You can install apps using the dnf. As you use other commands you can use them for installing apps as well. Below I have shown how to install 2 popular apps Firefox and GIMP:

1. Install Firefox Using “dnf”

To install an app Firefox you can use the following command which is similar to install packages:

sudo dnf install firefox
EXPLANATION
  • install: Command install the following package.
  • firefox: The app name I want to install.

Install an app firefox

You can see that, Firefox is installed, from the image.

2. Install GIMP Using “dnf”

Another app GIMP can also be installed in the same process. So use the previous command only change the app name which I changed here only. You can choose any app according to your liking.

Install a app with dnf

You can see, the app GIMP is installed, from the image.

Conclusion

In this article, I have tried to describe how dnf functions, and some useful command-line tools to manage the packages efficiently. Considering how difficult to learn to use the command line for beginners I tried to keep it simple as I could. So after reading this article, you will be able to use dnf properly and manage the system.

People Also Ask

What does dnf package manager do in Linux?

As a software package manager, DNF or Dandified YUM installs, updates, or removes software packages. It is the upgraded version of YUM (Yellow-Dog Updater Modified) that makes it simple to manage software packages for Linux by automatically checking and resolving dependencies and performing actions of installation, updation, and deletion of packages.

What is the dnf command in Linux?

The Linux dnf command is a package management command for Linux distros such as RHEL, Fedora, Cent OS, etc. To install, remove, or update software packages using the dnf package manager, the command “dnf” is the primary tool. For example, to install a package using the dnf command, type the command dnf install <package_name>.

Why use DNF instead of YUM?

You should use DNF because it provides better performance, and dependency resolution and uses less memory than yum. And Dnf has a fully documented API but Yum has no documented API.

How can I install packages using the dnf package manager?

To install a software package using the dnf package manager, open the terminal and run the command sudo dnf install <package_name>. This will install the single package package_name. In addition, you can install multiple packages by running the command sudo dnf install <package1> <package2> <package3>. For instance, the command sudo dnf install tigervnc installs the software package TigerVNC while running the command sudo dnf install samba vlc installs both the packages Samba and VLC media player.

Which is better DNF or APT?

Apt and Dnf are used in Debian-based distribution and RedHat-based distribution respectively. Apt and dnf are quite the same but dnf provides more unique features than apt. So you can use dnf over apt.

How to check available package updates using DNF?

To list the available software package updates using the DNF package manager, type the command dnf check-update on the prompt and press ENTER. This will display the available updates without installing them on the system.

Does Rhel 8 use DNF?

Yes, It is the new packager manager used to manage packages on RHEL 8.

Can I display the list of repositories using dnf package manager?

Absolutely. To display the list of the system repositories using dnf, open the terminal and type the command dnf repolist. Upon hitting the ENTER button, it displays the list of the enabled repositories of the system. In addition, running the command dnf repolist --all returns the list of both the enabled and disabled repositories.


Related Articles


<< Go Back to Package Manager Examples | Package Management in Linux | Learn Linux Basics

4.1/5 - (9 votes)
Afia Zahin Oishi

Assalamualaikum, I am Afia Zahin, completed my graduation in Biomedical Engineering from Bangladesh University of Engineering and Technology, currently working as a Linux Content Developer Executive at SOFTEKO. A high achieving professional with a strong work ethic and able to work in a team in order to consistently achieve my goal and build my skillset. Able to handle difficult problems with patience and swift decision-making. Read Full Bio

Leave a Comment