DNF

Essential DNF commands for package management on Fedora, RHEL, and CentOS systems.

cli
dnfpackage-managerfedorarhellinuxcentos

Installing Packages

# Install a package
dnf install package_name

# Install multiple packages
dnf install package1 package2 package3

# Install a specific version
dnf install package_name-version

# Install a local RPM file
dnf install /path/to/package.rpm

# Install package without confirmation prompt
dnf install -y package_name

# Reinstall a package
dnf reinstall package_name

Removing Packages

# Remove a package
dnf remove package_name

# Remove multiple packages
dnf remove package1 package2

# Remove a package and its dependencies (not used by other packages)
dnf autoremove package_name

# Remove unused dependencies
dnf autoremove

Updating Packages

# Update all packages
dnf update

# Update all packages without confirmation
dnf update -y

# Update a specific package
dnf update package_name

# Check for available updates
dnf check-update

# Upgrade packages (same as update)
dnf upgrade

# Update minimal (security and bugfix only)
dnf update-minimal

Searching Packages

# Search for a package
dnf search keyword

# Search in package names and descriptions
dnf search all keyword

# Display package information
dnf info package_name

# List all available packages
dnf list available

# List installed packages
dnf list installed

# List packages matching pattern
dnf list 'pattern*'

# Show which package provides a file
dnf provides /path/to/file

# Show which package provides a command
dnf provides '*/command_name'

Package Information

# Show detailed package information
dnf info package_name

# List files in a package
dnf repoquery -l package_name

# Show package dependencies
dnf repoquery --requires package_name

# Show what depends on a package
dnf repoquery --whatrequires package_name

# List changelog for a package
dnf changelog package_name

Repository Management

# List enabled repositories
dnf repolist

# List all repositories (enabled and disabled)
dnf repolist all

# Enable a repository
dnf config-manager --set-enabled repository_id

# Disable a repository
dnf config-manager --set-disabled repository_id

# Add a new repository
dnf config-manager --add-repo repository_url

# Install from a specific repository
dnf --enablerepo=repository_id install package_name

# Show repository information
dnf repoinfo repository_id

Package Groups

# List available groups
dnf group list

# List all groups (available and installed)
dnf group list --available

# Show group information
dnf group info "Group Name"

# Install a package group
dnf group install "Group Name"

# Remove a package group
dnf group remove "Group Name"

# Update packages in a group
dnf group update "Group Name"

History and Rollback

# Show transaction history
dnf history

# Show details of a specific transaction
dnf history info transaction_id

# Undo a transaction
dnf history undo transaction_id

# Redo a transaction
dnf history redo transaction_id

# Rollback to a specific transaction
dnf history rollback transaction_id

# List packages changed in last transaction
dnf history list last

Cache and Cleanup

# Clean cached packages
dnf clean packages

# Clean metadata cache
dnf clean metadata

# Clean all cache
dnf clean all

# Build metadata cache
dnf makecache

# Build cache faster (only essential data)
dnf makecache fast

Download Only

# Download package without installing
dnf download package_name

# Download package and dependencies
dnf download --resolve package_name

# Download to specific directory
dnf download --downloaddir=/path/to/dir package_name

# Install with download only (no install)
dnf install --downloadonly package_name

System Operations

# Check for problems in system
dnf check

# List duplicate packages
dnf list --duplicates

# Remove duplicate packages
dnf remove --duplicates

# Synchronize packages to repository versions
dnf distro-sync

# Show DNF configuration
dnf config-manager --dump

# Mark packages as installed by user
dnf mark install package_name

# Mark packages as dependency
dnf mark remove package_name

Useful Options

# Assume yes to all prompts
dnf -y command

# Show verbose output
dnf -v command

# Quiet mode (minimal output)
dnf -q command

# Skip broken packages
dnf --skip-broken command

# Best candidate (ignore version locks)
dnf --best command

# Allow erasing of protected packages
dnf --allowerasing command

# Refresh repository metadata
dnf --refresh command

Query Commands

# List all packages matching pattern
dnf list 'pattern*'

# List recently added packages
dnf list recent

# List updates available
dnf list updates

# List obsolete packages
dnf list obsoletes

# Show installed package size
dnf repoquery --installed --qf '%{size} %{name}'

# List packages by install date
dnf repoquery --userinstalled --qf '%{installtime} %{name}'

Security Updates

# List security updates
dnf updateinfo list security

# Install only security updates
dnf update --security

# List advisories
dnf updateinfo

# Show specific advisory details
dnf updateinfo info advisory_id

# Update packages for specific advisory
dnf update --advisory=advisory_id