Pacman Reference

Pacman is Arch Linux’s native package manager combining simple binary packages with a build system.

Basic Operations

Install Packages

# Single package
sudo pacman -S vim

# Multiple packages
sudo pacman -S vim neovim tmux

# Install without confirmation
sudo pacman -S --noconfirm package

Remove Packages

# Remove package only
sudo pacman -R package

# Remove with dependencies (recommended)
sudo pacman -Rs package

# Remove with dependencies and config files
sudo pacman -Rns package

Update System

# Sync databases and upgrade
sudo pacman -Syu

# Force database refresh
sudo pacman -Syyu

Querying Packages

Search Packages

# Search remote repos
pacman -Ss search-term

# Search installed packages
pacman -Qs search-term

# Search by regex
pacman -Ss '^vim'

Package Information

# Remote package info
pacman -Si vim

# Installed package info
pacman -Qi vim

# List package files
pacman -Ql vim

# Find which package owns file
pacman -Qo /usr/bin/vim

List Packages

# All installed
pacman -Q

# Explicitly installed
pacman -Qe

# Installed as dependencies
pacman -Qd

# Foreign packages (AUR)
pacman -Qm

# Orphaned packages
pacman -Qtdq

Database Operations

Sync Database

# Refresh package databases
sudo pacman -Sy

# Force full refresh
sudo pacman -Syy

Check Database

# Check for corrupted packages
sudo pacman -Dk

# Check for missing files
sudo pacman -Qk package

Cache Management

View Cache

# Cache location
ls /var/cache/pacman/pkg/

# Cache size
du -sh /var/cache/pacman/pkg/

Clean Cache

# Remove uninstalled packages from cache
sudo pacman -Sc

# Remove all cached packages
sudo pacman -Scc

# Using paccache (recommended)
sudo paccache -r       # Keep last 3 versions
sudo paccache -rk1     # Keep last 1 version
sudo paccache -ruk0    # Remove all uninstalled

Configuration

pacman.conf

Key settings in /etc/pacman.conf:

[options]
# Enable colors
Color

# Show package sizes
TotalDownload

# Enable parallel downloads
ParallelDownloads = 5

# Misc options
CheckSpace
VerbosePkgLists
ILoveCandy  # Easter egg: Pac-Man progress bar

[core]
Include = /etc/pacman.d/mirrorlist

[extra]
Include = /etc/pacman.d/mirrorlist

# Uncomment for 32-bit support
#[multilib]
#Include = /etc/pacman.d/mirrorlist

Ignore Packages

Prevent packages from upgrading:

# In /etc/pacman.conf
IgnorePkg = linux linux-headers
IgnoreGroup = gnome

Troubleshooting

Lock File Issues

# If pacman is locked
sudo rm /var/lib/pacman/db.lck

# Check if another process is running
pgrep -a pacman

Corrupted Database

# Rebuild package database
sudo pacman -Syyu

# If that fails
sudo rm -r /var/lib/pacman/sync
sudo pacman -Syyu

Keyring Issues

# Refresh keys
sudo pacman-key --refresh-keys

# Reset keyring
sudo pacman-key --init
sudo pacman-key --populate archlinux

Partial Upgrades

Never run pacman -Sy package. Always use full upgrade:

# WRONG - can break system
sudo pacman -Sy package

# CORRECT
sudo pacman -Syu package

Useful Combinations

# List explicitly installed non-base packages
comm -23 <(pacman -Qqe | sort) <(pacman -Qqg base-devel | sort)

# List all installed packages by size
pacman -Qi | awk '/^Name/{name=$3}/^Installed Size/{print $4,$5,name}' | sort -h

# Remove all orphans recursively
sudo pacman -Rns $(pacman -Qtdq)

# Downgrade package from cache
sudo pacman -U /var/cache/pacman/pkg/package-oldversion.pkg.tar.zst

# Reinstall all packages
sudo pacman -Qqn | sudo pacman -S -