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 Command - Quick Cheat Sheet
| Task | dnf Command |
|---|---|
| Install a package | sudo dnf install package_name |
| Remove a package | sudo dnf remove package_name |
| Update all packages | sudo dnf update |
| Upgrade system packages | sudo dnf upgrade |
| Search for a package | dnf search keyword |
| Display package information | dnf info package_name |
| List installed packages | dnf list installed |
| List available packages | dnf list available |
| Check for available updates | dnf check-update |
| Install multiple packages | sudo dnf install pkg1 pkg2 |
| Reinstall a package | sudo dnf reinstall package_name |
| Clean cached packages | sudo dnf clean all |
| Show enabled repositories | dnf repolist |
| Install package from repository | sudo dnf install package_name |
| Download package without installing | dnf download package_name |
This quick reference summarizes the most commonly used dnf command examples in Linux for managing software packages on Fedora, RHEL, Rocky Linux, and AlmaLinux systems.
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/*.repoEach repository defines the package source and whether it is enabled.
Configuration
DNF behavior is controlled by:
/etc/dnf/dnf.confThis 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 allAll 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_nameInstall multiple packages at once:
dnf install git curl vimRemove Packages
Remove a package and any unused dependencies:
dnf remove package_nameReinstall Packages
Reinstall a package to fix corrupted files or broken installs:
dnf reinstall package_nameDownload Packages Without Installing
Download RPM packages without installing them on the system:
dnf install package_name --downloadonly --downloaddir=/tmp/rpmsSystem Update & Upgrade
Update Packages
Update a specific package:
dnf update package_nameUpdate all installed packages:
dnf updateUpgrade System
Upgrade packages to newer versions, including dependency changes:
dnf upgradeCheck Available Updates
List packages that have updates available without installing them:
dnf check-updateSearch & Query Packages
Search Packages
Search for packages by name or description:
dnf search nginxList Packages
List all available and installed packages:
dnf listList only installed packages:
dnf list installedPackage Information
Display detailed information about a package:
dnf info httpdRepository Management
List Repositories
List enabled repositories:
dnf repolistList disabled repositories:
dnf repolist disabledList all repositories:
dnf repolist allEnable or Disable Repositories Temporarily
Enable a repository for a single command:
dnf install package --enablerepo=repo_nameDisable a repository for a single command:
dnf install package --disablerepo=repo_nameFile-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/python3Search using wildcard:
dnf provides */python3Dependency Management
Use this when you want to understand package dependency relationships.
List dependencies of a package:
dnf deplist nmapGroup Package Management
Package groups allow installing or removing related software together.
List available groups:
dnf grouplistInstall 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 historyUndo a transaction:
dnf history undo IDRedo a transaction:
dnf history redo IDRollback all changes after a transaction:
dnf history rollback IDCache & Metadata Management
These commands help resolve metadata issues and improve performance.
Clean all cached metadata and packages:
dnf clean allInteractive DNF Shell
Launch the interactive DNF shell for advanced package operations:
dnf shellSummary
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.


![Could not resolve host: mirrors.rockylinux.org [SOLVED]](/could-not-resolve-host-mirrors-rockylinux-org/setup_offline_repo_hu_88da60d085e271b6.webp)
![Setup local YUM/DNF repo server Rocky Linux 8 [Step-by-Step]](/local-offline-yum-dnf-repo-http-rocky-linux-8/offline_repo_hu_32c0d634b123a436.webp)


![[5 Solutions] another app is currently holding the yum lock](/another-app-is-currently-holding-the-yum-lock/yum_dnf_hu_45a0a24bd54d9e56.webp)


