Skip to main content

Package Management

Learn how to install, update, and manage software packages on Linux systems.

Package Managers by Distribution

DistributionPackage ManagerPackage Format
Ubuntu/Debianapt, dpkg.deb
Fedoradnf.rpm
CentOS/RHELyum, dnf.rpm
Arch Linuxpacman.pkg.tar.zst
openSUSEzypper.rpm

APT (Ubuntu/Debian)

Basic Commands

# Update package lists
sudo apt update

# Upgrade packages
sudo apt upgrade # Upgrade installed packages
sudo apt full-upgrade # Upgrade and handle dependencies

# Install package
sudo apt install package-name
sudo apt install package1 package2 # Multiple packages

# Remove package
sudo apt remove package-name # Keep configuration
sudo apt purge package-name # Remove everything
sudo apt autoremove # Remove unused dependencies

# Search for packages
apt search keyword
apt-cache search keyword

# Show package information
apt show package-name

# List installed packages
apt list --installed
dpkg -l

Package Information

# Check if package is installed
dpkg -l | grep package-name

# List files installed by package
dpkg -L package-name

# Find which package provides a file
dpkg -S /path/to/file

# Show package dependencies
apt-cache depends package-name

# Show reverse dependencies (what depends on this package)
apt-cache rdepends package-name

Managing Repositories

# Add repository
sudo add-apt-repository ppa:repository/name
sudo apt update

# Remove repository
sudo add-apt-repository --remove ppa:repository/name

# Edit sources list
sudo nano /etc/apt/sources.list

DNF/YUM (Fedora/RHEL/CentOS)

Basic Commands

# Update package database
sudo dnf check-update

# Install package
sudo dnf install package-name

# Update packages
sudo dnf update
sudo dnf upgrade

# Remove package
sudo dnf remove package-name

# Search packages
dnf search keyword

# Show package info
dnf info package-name

# List installed packages
dnf list installed

Package Groups

# List available groups
dnf group list

# Install group
sudo dnf group install "Development Tools"

# Remove group
sudo dnf group remove "Development Tools"

Snap Packages (Universal)

Snap works across multiple distributions:

# Install snap (if not already installed)
sudo apt install snapd # Ubuntu/Debian

# Find packages
snap find keyword

# Install package
sudo snap install package-name

# List installed snaps
snap list

# Update snaps
sudo snap refresh
sudo snap refresh package-name # Update specific package

# Remove snap
sudo snap remove package-name

Flatpak (Universal)

Another universal package format:

# Install Flatpak
sudo apt install flatpak # Ubuntu/Debian

# Add Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

# Search packages
flatpak search keyword

# Install package
flatpak install flathub com.application.Name

# Run flatpak application
flatpak run com.application.Name

# Update flatpaks
flatpak update

# Remove flatpak
flatpak uninstall com.application.Name

System Maintenance

Cleaning Up

# Ubuntu/Debian
sudo apt clean # Clear package cache
sudo apt autoclean # Remove old package versions
sudo apt autoremove # Remove unused dependencies

# Fedora/CentOS
sudo dnf clean all # Clean cache
sudo dnf autoremove # Remove unused dependencies

Checking Disk Usage

# Check apt cache size
du -sh /var/cache/apt/archives

# Check package database
du -sh /var/lib/apt/lists

# Find large packages
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n | tail -20

Troubleshooting

Fix Broken Packages

# Ubuntu/Debian
sudo apt --fix-broken install
sudo dpkg --configure -a

# If package manager is locked
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo dpkg --configure -a
sudo apt update

Hold/Unhold Packages

# Prevent package from being updated
sudo apt-mark hold package-name

# Allow updates again
sudo apt-mark unhold package-name

# List held packages
apt-mark showhold

Installing from Source

When packages aren't available in repositories:

# 1. Install build tools
sudo apt install build-essential

# 2. Download source
wget https://example.com/software.tar.gz
tar -xzf software.tar.gz
cd software

# 3. Configure, compile, install
./configure
make
sudo make install

# 4. Clean up build files
make clean

Best Practices

Security Updates

# Ubuntu - install security updates only
sudo apt upgrade -s | grep -i security

# Automatic security updates (Ubuntu)
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades

Before System Upgrades

# 1. Update package lists
sudo apt update

# 2. Check what will be upgraded
apt list --upgradable

# 3. Perform upgrade
sudo apt upgrade

# 4. Clean up
sudo apt autoremove
sudo apt autoclean

Repository Management

  • Only add trusted repositories
  • Use official PPAs when possible
  • Keep repository list minimal
  • Remove unused repositories

Common Packages

Development Tools

# Ubuntu/Debian
sudo apt install build-essential git curl wget vim

# Fedora
sudo dnf groupinstall "Development Tools"
sudo dnf install git curl wget vim

System Utilities

# Useful system tools
sudo apt install htop ncdu tree net-tools

Next Steps