DNF stands for Dandified Yum. It is the default package manager for RPM-based Linux distributions such as RHEL, Rocky Linux, AlmaLinux, Oracle Linux, and Fedora. DNF replaces YUM and provides faster dependency resolution, better performance, and lower memory usage.
DNF vs YUM (Detailed Comparison)
DNF and YUM are both package managers used in RPM-based Linux distributions, but DNF is the modern replacement for YUM. While most commands look similar, their internal design, performance, and reliability differ significantly.
| Feature | DNF | YUM |
|---|---|---|
| Dependency resolution | Uses libsolv (C-based solver) | Python-based resolver |
| Performance | Faster package operations | Slower, especially on large systems |
| Memory usage | Lower and predictable | Higher memory consumption |
| Error handling | Better conflict detection | Less accurate dependency errors |
| Default package manager | RHEL 8+, Fedora 22+ | Deprecated |
| Future support | Actively developed | Maintenance mode only |
What this means in practice
- DNF resolves dependencies faster, especially when installing large packages.
- YUM can become slow and unreliable on systems with many repositories enabled.
- DNF performs safer transactions, reducing the risk of broken installations.
- On modern systems, the
yumcommand is often just a symbolic link to DNF.
If you are using RHEL 8+, Rocky Linux, AlmaLinux, Oracle Linux, or Fedora, DNF should always be preferred over YUM.
How DNF Works
DNF is a repository-based package manager used on RPM-based Linux systems. It installs and manages software using repositories and dependency metadata.
Repositories
DNF installs packages only from configured repositories.
Repository files are stored in:
/etc/yum.repos.d/*.repo
Each repository defines the package source and whether it is enabled.
Configuration
DNF behavior is controlled by:
/etc/dnf/dnf.conf
This file manages caching, downloads, and default options.
Metadata & Dependencies
DNF caches repository metadata for faster execution and resolves all dependencies before applying changes.
To refresh metadata:
dnf clean all
All operations run as a single transaction, preventing partial installs and making DNF safe for production and automation.
DNF Quick Reference Cheat Sheet (Most Common Tasks)
| Task | Command |
|---|---|
| Install a package | dnf install pkg |
| Install multiple packages | dnf install pkg1 pkg2 |
| Remove a package | dnf remove pkg |
| Reinstall a package | dnf reinstall pkg |
| Download package without installing | dnf install pkg –downloadonly |
| Update a single package | dnf update pkg |
| Update all packages | dnf update |
| Upgrade system packages | dnf upgrade |
| Check available updates | dnf check-update |
| Search for a package | dnf search name |
| List all installed packages | dnf list installed |
| List available packages | dnf list available |
| Get detailed package info | dnf info pkg |
| Find which package owns a file | dnf provides /path/file |
| Find package using wildcard | dnf provides */binary |
| List enabled repositories | dnf repolist |
| List disabled repositories | dnf repolist disabled |
| List all repositories | dnf repolist all |
| Enable repo for one command | dnf install pkg –enablerepo=repo |
| Disable repo for one command | dnf install pkg –disablerepo=repo |
| List package dependencies | dnf deplist pkg |
| List package groups | dnf grouplist |
| Install a package group | dnf groupinstall “Group Name” |
| Remove a package group | dnf groupremove “Group Name” |
| View transaction history | dnf history |
| Undo a transaction | dnf history undo ID |
| Redo a transaction | dnf history redo ID |
| Rollback to transaction | dnf history rollback ID |
| Clean metadata and cache | dnf clean all |
| Clean only metadata | dnf clean metadata |
| Open interactive DNF shell | dnf shell |
Package Installation & Removal
Install Packages
Install a single package:
dnf install package_name
Install multiple packages at once:
dnf install git curl vim
Remove Packages
Remove a package and any unused dependencies:
dnf remove package_name
Reinstall Packages
Reinstall a package to fix corrupted files or broken installs:
dnf reinstall package_name
Download Packages Without Installing
Download RPM packages without installing them on the system:
dnf install package_name --downloadonly --downloaddir=/tmp/rpms
System Update & Upgrade
Update Packages
Update a specific package:
dnf update package_name
Update all installed packages:
dnf update
Upgrade System
Upgrade packages to newer versions, including dependency changes:
dnf upgrade
Check Available Updates
List packages that have updates available without installing them:
dnf check-update
Search & Query Packages
Search Packages
Search for packages by name or description:
dnf search nginx
List Packages
List all available and installed packages:
dnf list
List only installed packages:
dnf list installed
Package Information
Display detailed information about a package:
dnf info httpd
Repository Management
List Repositories
List enabled repositories:
dnf repolist
List disabled repositories:
dnf repolist disabled
List all repositories:
dnf repolist all
Enable or Disable Repositories Temporarily
Enable a repository for a single command:
dnf install package --enablerepo=repo_name
Disable a repository for a single command:
dnf install package --disablerepo=repo_name
File-to-Package Mapping
These commands help identify which package provides a specific file. Very useful for troubleshooting missing binaries.
Find which package provides a file:
dnf provides /usr/bin/python3
Search using wildcard:
dnf provides */python3
Dependency Management
Use this when you want to understand package dependency relationships.
List dependencies of a package:
dnf deplist nmap
Group Package Management
Package groups allow installing or removing related software together.
List available groups:
dnf grouplist
Install a group package:
dnf groupinstall "Security Tools"
Remove a group package:
dnf groupremove "Security Tools"
Update a group package:
dnf groupupdate "Headless Management"
Transaction History & Rollback
DNF keeps a history of all package operations, making rollbacks possible.
View transaction history:
dnf history
Undo a transaction:
dnf history undo ID
Redo a transaction:
dnf history redo ID
Rollback all changes after a transaction:
dnf history rollback ID
Cache & Metadata Management
These commands help resolve metadata issues and improve performance.
Clean all cached metadata and packages:
dnf clean all
Interactive DNF Shell
Launch the interactive DNF shell for advanced package operations:
dnf shell
Summary
DNF is the modern package manager for RPM-based Linux distributions. It simplifies software installation, updates, removals, and dependency management using repository-based transactions.
Compared to YUM, DNF offers faster dependency resolution, better error handling, and safer transactions, making it suitable for both daily administration and automation. With built-in history and rollback support, DNF helps maintain system stability while managing packages efficiently.

