Yum & DNF
Yum (Yellowdog Updater Modified) is the package manager for RPM-based distributions. DNF (Dandified Yum) is the newer replacement for Yum.
Installation
CentOS/RHEL 7 (Yum)
# Yum is pre-installed
yum --version
# Update yum
sudo yum update yum
# Install common tools
sudo yum install epel-release
CentOS/RHEL 8+ & Fedora (DNF)
# DNF is default on newer systems
dnf --version
# Install DNF on older systems
sudo yum install dnf
# Enable PowerTools repository (RHEL/CentOS 8)
sudo dnf config-manager --set-enabled powertools
Basic Commands
| Command | Description |
|---|---|
yum search [package] | Search for package |
yum info [package] | Show package information |
yum install [package] | Install package |
yum remove [package] | Remove package |
yum update | Update all packages |
yum update [package] | Update specific package |
yum check-update | List available updates |
yum list installed | List installed packages |
yum list available | List available packages |
yum list all | List all packages |
Searching & Installing
Search Packages
# Search by package name
yum search nginx
# Search by description
yum search "web server"
# Search by name only
yum search --name "python*"
# Show package info
yum info nginx
# Show all versions
yum list nginx --showduplicates
# Search in specific repository
yum search --repo fedora nginx
# List recent packages
yum list recent
Installing Packages
# Install single package
sudo yum install nginx
# Install multiple packages
sudo yum install nginx mysql-server php
# Install specific version
sudo yum install nginx-1.20.0
# Install from file
sudo yum install ./package.rpm
# Install with dependencies
sudo yum install nginx
# Install with recommends
sudo yum install --setopt=install_weak_deps=True nginx
# Do not install weak dependencies
sudo yum install --setopt=install_weak_deps=False nginx
# Skip broken dependencies
sudo yum install --skip-broken nginx
Updating Packages
| Command | Description |
|---|---|
sudo yum check-update | List available updates |
sudo yum update | Update all packages |
sudo yum update [package] | Update specific package |
sudo yum update --security | Install security updates |
sudo yum downgrade [package] | Downgrade package |
sudo yum upgrade | Upgrade packages (obsoletes too) |
Update Examples
# Check for available updates
yum check-update
# Update all packages
sudo yum update
# Update specific package
sudo yum update nginx
# Update security patches only
sudo yum update --security
# Update to specific version
sudo yum update nginx-1.20.0
# Downgrade package
sudo yum downgrade nginx
# Upgrade system
sudo yum upgrade
# Update without interactive prompt
sudo yum -y update
Removing Packages
# Remove package
sudo yum remove nginx
# Remove multiple packages
sudo yum remove nginx mysql-server
# Remove package and dependencies
sudo yum autoremove
# Remove orphaned packages
sudo yum remove --duplicates
# Do not remove dependencies
sudo yum remove nginx
# Confirm removal
sudo yum remove -y nginx
Repository Management
View Repositories
# List enabled repositories
yum repolist
# List disabled repositories
yum repolist disabled
# Show all repositories
yum repolist all
# Show repository details
yum repoinfo fedora
# List repo packages
yum repo-pkgs fedora list
Enable/Disable Repositories
# Enable repository
sudo yum-config-manager --enable fedora-updates
# Disable repository
sudo yum-config-manager --disable fedora
# Enable EPEL repository (Extra Packages for Enterprise Linux)
sudo yum install epel-release
# Enable PowerTools (RHEL/CentOS)
sudo yum install dnf-plugins-core
sudo yum config-manager --set-enabled powertools
# Add repository
sudo yum-config-manager --add-repo https://example.com/repo.repo
# Remove repository
sudo yum-config-manager --disable example-repo
Package Groups
# List available groups
yum grouplist
# List package groups with descriptions
yum grouplist --ids
# Show group contents
yum groupinfo "Development Tools"
# Install group
sudo yum groupinstall "Development Tools"
# Install group with optional
sudo yum groupinstall --with-optional "Development Tools"
# Remove group
sudo yum groupremove "Development Tools"
# Update group
sudo yum groupupdate "Development Tools"
# Install web server stack
sudo yum groupinstall "Web Server" "MySQL Database" "PHP Support"
Package Management
Query Installed Packages
# List installed packages
yum list installed
# List specific package
yum list installed nginx
# Show installed version
rpm -q nginx
# Show detailed package info
yum info installed nginx
# List package files
rpm -ql nginx
# List recently installed
yum list recent
# Count installed packages
rpm -qa | wc -l
# Search installed packages
yum list installed | grep nginx
Package Details
# Show package dependencies
yum deplist nginx
# Show what provides file
yum provides /etc/nginx/nginx.conf
# Show which package installed file
rpm -qf /etc/nginx/nginx.conf
# List files in package
rpm -ql nginx
# Show package changelog
rpm -q --changelog nginx
# Verify package files
rpm -V nginx
# Show package signature
rpm -qi nginx | grep -i signature
Yum Cache
# Clean all cache
sudo yum clean all
# Clean package cache
sudo yum clean packages
# Clean metadata
sudo yum clean metadata
# Clean headers
sudo yum clean headers
# Clean temporary files
sudo yum clean temp
# Remove cached packages
sudo yum clean expire-cache
# Make cache
sudo yum makecache
# Clean and update
sudo yum clean all && sudo yum makecache
System-wide Operations
# Check for problems
yum check
# Check available updates
yum check-update
# Check dependencies
yum deplist nginx
# Download without installing
yum download nginx
# Download with dependencies
yum download --resolve nginx
# Install from local repository
sudo yum localinstall package.rpm
# Install transaction
sudo yum install -y nginx mysql-server
Troubleshooting
Common Issues
# Rpmdb corruption
sudo rm -f /var/lib/rpm/__db.*
sudo rpm --rebuilddb
# Broken dependencies
sudo yum depcheck
# Stuck transactions
sudo yum clean all
sudo yum update
# Lock file issues
sudo rm /var/run/yum.pid
sudo yum clean all
# GPG key errors
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sudo yum clean all
Debugging
# Verbose output
yum -v install nginx
# Debug mode
yum -d install nginx
# Check repository
yum repocheck
# View transaction
yum history
# Undo transaction
sudo yum history undo [ID]
# List transaction
yum history list
# Info about transaction
yum history info [ID]
DNF Specific Features
# DNF is newer, with improved features
dnf install nginx
# Automatic dependency resolution
sudo dnf install nginx
# Better performance
dnf list available
# Plugins
dnf plugin-list
# Check-update detailed
dnf check-update --refresh
# System upgrade
sudo dnf system-upgrade download --releasever=9
sudo dnf system-upgrade reboot
Useful Aliases
# Add to .bashrc
alias yi='sudo yum install'
alias yr='sudo yum remove'
alias yu='sudo yum update'
alias ys='yum search'
alias yl='yum list installed'
alias yc='sudo yum clean all'
alias yh='yum history'
# DNF aliases
alias di='sudo dnf install'
alias dr='sudo dnf remove'
alias du='sudo dnf update'
alias ds='dnf search'
Best Practices
- Use
yum check-updatebefore updating - Keep systems updated regularly
- Use security-only updates for production
- Test updates on non-production first
- Keep backups before major updates
- Monitor disk space usage
- Use
--skip-brokencautiously - Review dependency changes before install
- Document custom repository additions
- Verify GPG keys before installing
Resources
man yum- Yum manualman dnf- DNF manual- DNF Documentation
- Yum Documentation
- EPEL Repository
Last updated: 2026-03-30