Package Management with Pacman
HorizonOS uses pacman as its package manager. This guide covers essential package management tasks.
Basic Pacman Commands
Update System
# Update package database and upgrade all packages
sudo pacman -Syu
# Update database only
sudo pacman -Sy
⚠️ Important
Always run pacman -Syu before installing new packages to avoid partial upgrades.
Install Packages
# Install a single package
sudo pacman -S package-name
# Install multiple packages
sudo pacman -S package1 package2 package3
# Install a package without prompting
sudo pacman -S --noconfirm package-name
Remove Packages
# Remove a package
sudo pacman -R package-name
# Remove a package and its dependencies
sudo pacman -Rs package-name
# Remove a package, dependencies, and config files
sudo pacman -Rns package-name
Search for Packages
# Search for a package
pacman -Ss search-term
# Search installed packages
pacman -Qs search-term
Package Information
# Show package information
pacman -Si package-name
# Show info for installed package
pacman -Qi package-name
# List files owned by a package
pacman -Ql package-name
# Find which package owns a file
pacman -Qo /path/to/file
System Maintenance
List Orphaned Packages
Orphaned packages are dependencies that are no longer needed:
# List orphaned packages
pacman -Qtdq
# Remove all orphaned packages
sudo pacman -Rns $(pacman -Qtdq)
Clean Package Cache
Pacman stores downloaded packages in /var/cache/pacman/pkg/:
# Remove old versions of installed packages
sudo pacman -Sc
# Remove all cached packages
sudo pacman -Scc
Check for Errors
# Check for missing dependencies
sudo pacman -Dk
# Verify all packages
sudo pacman -Qkk
Working with Package Groups
# List all groups
pacman -Sg
# List packages in a group
pacman -Sg group-name
# Install an entire group
sudo pacman -S group-name
Downgrading Packages
If a package update causes issues, you can downgrade:
# List available versions in cache
ls /var/cache/pacman/pkg/ | grep package-name
# Install specific version
sudo pacman -U /var/cache/pacman/pkg/package-name-version.pkg.tar.zst
Ignoring Packages
To prevent certain packages from being updated, edit /etc/pacman.conf:
# Add to /etc/pacman.conf
IgnorePkg = package-name package-name2
Updating Mirrors
Update your mirror list for faster downloads:
# Install reflector
sudo pacman -S reflector
# Update mirrors
sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
# Refresh database
sudo pacman -Syy
Parallel Downloads
Speed up package downloads by enabling parallel downloads. Edit /etc/pacman.conf:
ParallelDownloads = 5
Useful Pacman Flags
| Flag | Description |
|---|---|
-S |
Sync (install) |
-R |
Remove |
-Q |
Query |
-U |
Upgrade from file |
-y |
Refresh database |
-u |
System upgrade |
-s |
Search |
-c |
Clean cache |
📚 Next Steps
Learn about the AUR (Arch User Repository) to access thousands of additional packages.
Troubleshooting
Package Conflicts
If you encounter package conflicts:
# Remove conflicting package first
sudo pacman -R conflicting-package
sudo pacman -S new-package
Corrupted Database
# Refresh database
sudo rm /var/lib/pacman/sync/*
sudo pacman -Syy
Failed Transaction
# Remove lock file if pacman crashed
sudo rm /var/lib/pacman/db.lck