Linux Package Management Guide
Package management is essential for installing, updating, and maintaining software on Linux systems. This guide covers the major package managers across different distributions.
Overview: Package Managers by Distribution
| Distribution | Package Manager | Package Format | Example |
|---|---|---|---|
| Debian/Ubuntu | apt, dpkg |
.deb |
apt install nginx |
| RHEL/CentOS 8+ | dnf |
.rpm |
dnf install httpd |
| RHEL/CentOS 7 | yum |
.rpm |
yum install httpd |
| Fedora | dnf |
.rpm |
dnf install package |
| Arch Linux | pacman |
.pkg.tar.zst |
pacman -S package |
| openSUSE | zypper |
.rpm |
zypper install package |
| Alpine Linux | apk |
.apk |
apk add package |
APT - Debian/Ubuntu Package Management
Basic APT Commands
# Update package index
sudo apt update
# Upgrade all packages
sudo apt upgrade
# Full upgrade (may remove packages)
sudo apt full-upgrade
# Install package
sudo apt install packagename
# Remove package
sudo apt remove packagename
# Remove package and config files
sudo apt purge packagename
# Remove unnecessary packages
sudo apt autoremove
# Search for packages
apt search keyword
# Show package information
apt show packagename
Advanced APT Usage
# Install specific version
sudo apt install packagename=version
# Install without recommends
sudo apt install --no-install-recommends packagename
# Download package without installing
apt download packagename
# Simulate installation (dry run)
apt install -s packagename
# Fix broken dependencies
sudo apt --fix-broken install
# Clean package cache
sudo apt clean
sudo apt autoclean
# List installed packages
apt list --installed
# List upgradable packages
apt list --upgradable
# Show package dependencies
apt depends packagename
# Show reverse dependencies
apt rdepends packagename
Managing Repositories
# Add repository (Ubuntu)
sudo add-apt-repository ppa:repo/name
sudo apt update
# Remove repository
sudo add-apt-repository --remove ppa:repo/name
# Edit sources list
sudo nano /etc/apt/sources.list
# Add repository key
wget -qO - https://repo.example.com/key.gpg | sudo apt-key add -
# List repositories
grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/*
dpkg - Low-Level Package Management
# Install .deb file
sudo dpkg -i package.deb
# Remove package
sudo dpkg -r packagename
# List all installed packages
dpkg -l
# Search installed packages
dpkg -l | grep pattern
# Show package contents
dpkg -L packagename
# Find which package owns a file
dpkg -S /path/to/file
# Extract .deb without installing
dpkg-deb -x package.deb output-dir/
YUM/DNF - RHEL/CentOS/Fedora
Basic DNF Commands
# Update package database
sudo dnf check-update
# Upgrade all packages
sudo dnf upgrade
# Install package
sudo dnf install packagename
# Remove package
sudo dnf remove packagename
# Search packages
dnf search keyword
# Show package info
dnf info packagename
# List installed packages
dnf list installed
# List available packages
dnf list available
# Clean cache
sudo dnf clean all
Advanced DNF Usage
# Install package group
sudo dnf group install "Development Tools"
# List groups
dnf group list
# Show group info
dnf group info "System Tools"
# Install specific version
sudo dnf install packagename-version
# Downgrade package
sudo dnf downgrade packagename
# Show history
dnf history
# Undo last transaction
sudo dnf history undo last
# Reinstall package
sudo dnf reinstall packagename
# Check for updates
dnf check-update
# Update specific package
sudo dnf update packagename
YUM Commands (CentOS 7 and earlier)
# Update system
sudo yum update
# Install package
sudo yum install packagename
# Remove package
sudo yum remove packagename
# Search packages
yum search keyword
# List installed
yum list installed
# Show package info
yum info packagename
# Install group
sudo yum groupinstall "Development Tools"
# List groups
yum grouplist
# Clean cache
sudo yum clean all
Managing Repositories (RHEL/CentOS)
# List enabled repositories
dnf repolist
yum repolist
# Add repository
sudo dnf config-manager --add-repo https://example.com/repo.repo
# Enable repository
sudo dnf config-manager --set-enabled reponame
# Disable repository
sudo dnf config-manager --set-disabled reponame
# Install EPEL repository
sudo dnf install epel-release # RHEL 8/CentOS 8
sudo yum install epel-release # CentOS 7
# Edit repo files
sudo vi /etc/yum.repos.d/reponame.repo
RPM - Low-Level Package Management
# Install .rpm file
sudo rpm -ivh package.rpm
# Upgrade package
sudo rpm -Uvh package.rpm
# Remove package
sudo rpm -e packagename
# Query installed packages
rpm -qa
# Query package info
rpm -qi packagename
# List package files
rpm -ql packagename
# Find which package owns file
rpm -qf /path/to/file
# Verify package
rpm -V packagename
Pacman - Arch Linux
Basic Pacman Commands
# Sync and update system
sudo pacman -Syu
# Install package
sudo pacman -S packagename
# Remove package
sudo pacman -R packagename
# Remove package and dependencies
sudo pacman -Rs packagename
# Search remote packages
pacman -Ss keyword
# Search local packages
pacman -Qs keyword
# Show package info
pacman -Si packagename
# List installed packages
pacman -Q
# List explicitly installed
pacman -Qe
# Clean package cache
sudo pacman -Sc
Advanced Pacman Usage
# Install local package
sudo pacman -U package.pkg.tar.zst
# Download without installing
sudo pacman -Sw packagename
# List package files
pacman -Ql packagename
# Find owner of file
pacman -Qo /path/to/file
# Check for orphaned packages
pacman -Qtdq
# Remove orphans
sudo pacman -Rs $(pacman -Qtdq)
# Force refresh package database
sudo pacman -Syy
# List AUR helpers
# yay, paru (install separately)
Snap - Universal Packages
Basic Snap Commands
# Install snap
sudo apt install snapd # Debian/Ubuntu
sudo dnf install snapd # Fedora
# Find snaps
snap find keyword
# Install snap
sudo snap install packagename
# Install from channel
sudo snap install packagename --channel=edge
# List installed snaps
snap list
# Update snap
sudo snap refresh packagename
# Update all snaps
sudo snap refresh
# Remove snap
sudo snap remove packagename
# Show snap info
snap info packagename
# Revert to previous version
sudo snap revert packagename
Flatpak - Universal Packages
Basic Flatpak Commands
# Install Flatpak
sudo apt install flatpak
# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Search applications
flatpak search keyword
# Install application
flatpak install flathub app.id
# List installed
flatpak list
# Run application
flatpak run app.id
# Update applications
flatpak update
# Uninstall application
flatpak uninstall app.id
# Remove unused runtimes
flatpak uninstall --unused
Common Package Management Tasks
System Updates
# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
# RHEL/CentOS/Fedora
sudo dnf upgrade -y
# Arch Linux
sudo pacman -Syu
# Full system upgrade with cleanup
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove -y
Installing Development Tools
# Debian/Ubuntu
sudo apt install build-essential
# RHEL/CentOS/Fedora
sudo dnf groupinstall "Development Tools"
# Arch Linux
sudo pacman -S base-devel
Managing Dependencies
# Show dependencies
apt depends packagename # Debian/Ubuntu
dnf repoquery --requires packagename # RHEL/Fedora
pacman -Si packagename | grep Depends # Arch
# Show what depends on package
apt rdepends packagename
dnf repoquery --whatrequires packagename
# Fix broken dependencies
sudo apt --fix-broken install # Debian/Ubuntu
sudo dnf check # RHEL/Fedora
Package Information
# Package details
apt show packagename # Debian/Ubuntu
dnf info packagename # RHEL/Fedora
pacman -Si packagename # Arch
# Package changelog
apt changelog packagename # Debian/Ubuntu
dnf changelog packagename # RHEL/Fedora
# List package files
dpkg -L packagename # Debian/Ubuntu
rpm -ql packagename # RHEL/Fedora
pacman -Ql packagename # Arch
Best Practices
Regular Maintenance
# Weekly update routine
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
# Clean package cache
sudo apt clean # Debian/Ubuntu
sudo dnf clean all # RHEL/Fedora
sudo pacman -Sc # Arch
# Check for security updates
sudo apt list --upgradable | grep security
sudo dnf updateinfo list security
Before Major Changes
# Simulate installation
apt install -s packagename
dnf install --assumeno packagename
# Create system snapshot (if using Btrfs/LVM)
sudo snapper create -d "Before package upgrade"
# List package files before installing
apt-file list packagename
dnf repoquery -l packagename
Troubleshooting
# Fix broken packages
sudo apt --fix-broken install
sudo dpkg --configure -a
# Rebuild package cache
sudo apt clean && sudo apt update
# Check package integrity
sudo debsums -c # Debian/Ubuntu
rpm -Va # RHEL/Fedora
pacman -Qk # Arch
# Force reinstall
sudo apt install --reinstall packagename
sudo dnf reinstall packagename
sudo pacman -S packagename
Quick Reference
Essential Commands by Distribution
# Debian/Ubuntu (APT)
sudo apt update # Update package list
sudo apt upgrade # Upgrade packages
sudo apt install pkg # Install package
sudo apt remove pkg # Remove package
apt search keyword # Search packages
# RHEL/CentOS/Fedora (DNF/YUM)
sudo dnf check-update # Check for updates
sudo dnf upgrade # Upgrade packages
sudo dnf install pkg # Install package
sudo dnf remove pkg # Remove package
dnf search keyword # Search packages
# Arch Linux (Pacman)
sudo pacman -Syu # Update system
sudo pacman -S pkg # Install package
sudo pacman -R pkg # Remove package
pacman -Ss keyword # Search packages