Pacman Package Manager Cheatsheet for Arch Linux

Pacman is the powerful package manager for Arch Linux and its derivatives. This comprehensive guide covers essential commands, advanced operations, and troubleshooting techniques to help you effectively manage your Arch Linux system.

Package Installation

Basic Installation

# Install a single package
sudo pacman -S package-name
 
# Install multiple packages
sudo pacman -S package1 package2 package3
 
# Install package without prompting for confirmation
sudo pacman -S --noconfirm package-name
 
# Install only if not already installed
sudo pacman -S --needed package-name

Installation from Files

# Install from local package file
sudo pacman -U /path/to/package.pkg.tar.xz
 
# Install from URL
sudo pacman -U https://example.com/package.pkg.tar.xz
 
# Install packages from CD/DVD/USB
sudo pacman -U file:///mnt/cdrom/package.pkg.tar.xz

Package Removal

Standard Removal

# Remove a package
sudo pacman -R package-name
 
# Remove package and its dependencies (not required by other packages)
sudo pacman -Rs package-name
 
# Remove package, dependencies, and configuration files
sudo pacman -Rns package-name
 
# Remove package and all packages that depend on it
sudo pacman -Rc package-name

Cleanup Operations

# Remove all orphaned packages
sudo pacman -Rs $(pacman -Qtdq)
 
# Remove package cache (free up disk space)
sudo pacman -Sc
 
# Remove all cached packages
sudo pacman -Scc

System Updates

Standard Updates

# Update package database
sudo pacman -Sy
 
# Update all packages
sudo pacman -Su
 
# Update database and upgrade system (recommended)
sudo pacman -Syu
 
# Force refresh of package databases
sudo pacman -Syy
 
# Update with dependency resolution
sudo pacman -Syu --needed

Partial Updates (Use with Caution)

# Update specific package
sudo pacman -S package-name
 
# Downgrade package (requires package cache)
sudo pacman -U /var/cache/pacman/pkg/package-old-version.pkg.tar.xz

Search Operations

# Search for packages in repositories
pacman -Ss search-term
 
# Search for packages with detailed information
pacman -Ss search-term | grep -A 5 -B 5 "search-term"
 
# Search installed packages
pacman -Qs search-term
 
# Search package files
pacman -Fl search-term

Package Information

# Show package information
pacman -Si package-name
 
# Show information for installed package
pacman -Qi package-name
 
# List files owned by package
pacman -Ql package-name
 
# Find which package owns a file
pacman -Qo /path/to/file
 
# Show package dependencies
pacman -Qi package-name | grep "Depends On"
 
# Show packages that depend on this package
pacman -Qii package-name

Package Listing

Installed Packages

# List all installed packages
pacman -Q
 
# List explicitly installed packages
pacman -Qe
 
# List packages installed as dependencies
pacman -Qd
 
# List orphaned packages
pacman -Qdt
 
# List foreign packages (from AUR)
pacman -Qm
 
# List native packages (from official repos)
pacman -Qn

Repository Packages

# List all packages in repository
pacman -Sl
 
# List packages from specific repository
pacman -Sl core
 
# List installed packages from specific repository
pacman -Sl core | grep installed

GPG Key Management

List and Verify Keys

# List all trusted GPG keys
pacman-key --list-keys
 
# List key fingerprints
pacman-key --list-sigs
 
# Check key signatures
pacman-key --check-sigs

Add and Trust Keys

# Add a GPG key from file
sudo pacman-key --add /path/to/key.asc
 
# Add key from keyserver
sudo pacman-key --recv-keys KEY-ID
 
# Trust a key locally
sudo pacman-key --lsign-key KEY-ID
 
# Trust a key globally
sudo pacman-key --sign-key KEY-ID

For comprehensive GPG key management beyond pacman operations, see the GPG operations cheatsheet, which covers key generation, import/export, and digital signature workflows essential for package repository creation and maintenance.

Key Management

# Initialize keyring
sudo pacman-key --init
 
# Populate keyring with Arch Linux keys
sudo pacman-key --populate archlinux
 
# Refresh keys from keyserver
sudo pacman-key --refresh-keys
 
# Remove a key
sudo pacman-key --delete KEY-ID

Package Download and Caching

Download Operations

# Download packages without installing
mkdir packages blankdb
sudo pacman -Syw --cachedir packages --dbpath blankdb --needed --noconfirm package-name
 
# Download specific package version
sudo pacman -Syw --cachedir packages --dbpath blankdb package-name=version
 
# Download with all dependencies
sudo pacman -Syw --cachedir packages --dbpath blankdb --needed --noconfirm package-name

Cache Management

# Show cache directory
pacman -v
 
# List cached packages
ls /var/cache/pacman/pkg/
 
# Clean cache (keep 3 most recent versions)
sudo paccache -r
 
# Clean cache (keep only 1 version)
sudo paccache -rk1
 
# Remove all cached packages for uninstalled software
sudo paccache -ruk0

Database Operations

Database Maintenance

# Synchronize package databases
sudo pacman -Sy
 
# Force synchronization
sudo pacman -Syy
 
# Check database integrity
sudo pacman -Dk
 
# Rebuild package database
sudo pacman -Fyy

Database Queries

# Search package files database
pacman -Fl package-name
 
# Find package that provides a file
pacman -F filename
 
# Update file database
sudo pacman -Fy

Advanced Operations

Dependency Management

# Check dependency tree
pactree package-name
 
# Show reverse dependencies
pactree -r package-name
 
# Show optional dependencies
pacman -Qi package-name | grep "Optional Deps"
 
# Install package with optional dependencies
sudo pacman -S package-name --asdeps optional-dep1 optional-dep2

Package Groups

# List all package groups
pacman -Sg
 
# Show packages in a group
pacman -Sg group-name
 
# Install entire group
sudo pacman -S group-name
 
# List installed packages from group
pacman -Qg group-name

Configuration and Logs

# Show pacman configuration
cat /etc/pacman.conf
 
# View pacman log
sudo tail -f /var/log/pacman.log
 
# Search pacman log
grep "keyword" /var/log/pacman.log
 
# Show recent package operations
grep -E "(installed|removed|upgraded)" /var/log/pacman.log | tail -20

Troubleshooting Common Issues

Package Conflicts

# Force installation ignoring conflicts
sudo pacman -S --force package-name
 
# Ignore specific packages during update
sudo pacman -Syu --ignore package-name
 
# Temporarily ignore package group
sudo pacman -Syu --ignoregroup group-name

Broken Dependencies

# Check for broken dependencies
sudo pacman -Dk
 
# Reinstall package with dependencies
sudo pacman -S --force package-name
 
# Download and reinstall package
sudo pacman -Syu --force package-name

Database Corruption

# Remove database lock
sudo rm /var/lib/pacman/db.lck
 
# Rebuild package database
sudo pacman-db-upgrade
 
# Verify database integrity
sudo pacman -Dk

Mirror Issues

# Test mirror speed
sudo pacman-mirrors --fasttrack
 
# Update mirror list
sudo pacman-mirrors --country Country-Name
 
# Manually edit mirrors
sudo nano /etc/pacman.d/mirrorlist

Performance Optimization

Parallel Downloads

Add to /etc/pacman.conf:

ParallelDownloads = 5

Colored Output

Add to /etc/pacman.conf:

Color

Verbose Package Lists

Add to /etc/pacman.conf:

VerbosePkgLists

Download Timeout

Add to /etc/pacman.conf:

XferCommand = /usr/bin/curl -L -C - -f -o %o %u

Useful Aliases

Add these to your shell configuration:

# System update
alias update='sudo pacman -Syu'
 
# Install package
alias install='sudo pacman -S'
 
# Remove package
alias remove='sudo pacman -Rs'
 
# Search packages
alias search='pacman -Ss'
 
# List installed packages
alias listpkg='pacman -Q'
 
# Clean cache
alias cleancache='sudo pacman -Sc'
 
# Remove orphans
alias removeorphans='sudo pacman -Rs $(pacman -Qtdq)'

Security Best Practices

Package Verification

# Always verify package signatures
sudo pacman -S --needed package-name
 
# Check package integrity before installation
pacman -Qk package-name
 
# Verify all installed packages
pacman -Qk

Key Management Security

# Only trust keys from verified sources
sudo pacman-key --lsign-key KEY-ID
 
# Regularly refresh keys
sudo pacman-key --refresh-keys
 
# Remove unused keys
sudo pacman-key --delete OLD-KEY-ID

System Security

# Regular system updates
sudo pacman -Syu
 
# Monitor security updates
grep -i security /var/log/pacman.log
 
# Use official repositories only
# Avoid adding untrusted repositories

Emergency Recovery

Boot from Live USB

# Mount system partition
mount /dev/sdX1 /mnt
 
# Mount boot partition (if separate)
mount /dev/sdX2 /mnt/boot
 
# Chroot into system
arch-chroot /mnt
 
# Fix broken system
pacman -Syu

Offline Package Installation

# Download packages on working system
sudo pacman -Syw --cachedir /path/to/usb package-name
 
# Install from USB on broken system
sudo pacman -U /path/to/usb/package-name.pkg.tar.xz

Automated System Configuration

For comprehensive system setup beyond package management, consider these automated utilities:

These utilities build upon pacman’s package management capabilities to create fully configured development and desktop environments.

Development Environment Integration

The pacman package manager integrates seamlessly with development workflows:

  • Package Creation: Use pacman with GPG signing for custom package repositories
  • System Updates: Coordinate pacman updates with development environment configurations
  • Dependency Management: Leverage pacman’s dependency resolution for development tool chains

Official Documentation

References and Resources

Community Resources

Questions Answered in This Document

Q: How do I install a package with pacman? A: Use sudo pacman -S package-name to install a single package, or sudo pacman -S package1 package2 for multiple packages.

Q: What’s the difference between -R, -Rs, and -Rns when removing packages? A: -R removes only the package, -Rs removes the package and unused dependencies, and -Rns removes the package, dependencies, and configuration files.

Q: How do I update my entire Arch Linux system? A: Use sudo pacman -Syu to update the package database and upgrade all installed packages to their latest versions.

Q: How can I search for packages in the repositories? A: Use pacman -Ss search-term to search repository packages, or pacman -Qs search-term to search only installed packages.

Q: How do I clean up orphaned packages? A: Run sudo pacman -Rs $(pacman -Qtdq) to remove all orphaned packages (packages installed as dependencies but no longer needed).

Q: How do I add and trust a GPG key for package verification? A: First add the key with sudo pacman-key --add key.asc, then trust it locally with sudo pacman-key --lsign-key KEY-ID. For comprehensive GPG operations, see the GPG cheatsheet.

Q: How can I download packages without installing them? A: Create directories with mkdir packages blankdb then use sudo pacman -Syw --cachedir packages --dbpath blankdb --needed --noconfirm package-name.

Q: What should I do if pacman says the database is locked? A: Remove the lock file with sudo rm /var/lib/pacman/db.lck, but only if you’re sure no other pacman process is running.

Q: How do I find which package owns a specific file? A: Use pacman -Qo /path/to/file to find which installed package owns a specific file on your system.

Q: How can I see what files a package contains? A: Use pacman -Ql package-name to list all files owned by an installed package, or pacman -Fl package-name for repository packages.