Mirror Configuration

Properly configured mirrors significantly improve package download speeds and reliability.

Mirror List Location

The mirror list is stored at /etc/pacman.d/mirrorlist.

# View current mirrors
cat /etc/pacman.d/mirrorlist

# Backup before modifying
sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

Reflector

Installation

sudo pacman -S reflector

Manual Mirror Update

# US mirrors, HTTPS, sorted by speed
sudo reflector \
  --country US \
  --age 12 \
  --protocol https \
  --sort rate \
  --save /etc/pacman.d/mirrorlist

# Multiple countries
sudo reflector \
  --country US,Canada \
  --age 6 \
  --protocol https \
  --sort rate \
  --latest 20 \
  --save /etc/pacman.d/mirrorlist

Reflector Options

Option Description

--country

Filter by country code or name

--age N

Only mirrors synced within N hours

--protocol

https, http, ftp, rsync

--sort

rate, age, score, country

--latest N

Limit to N most recently synced

--fastest N

Limit to N fastest mirrors

--number N

Total mirrors to save

Automatic Updates with systemd

Enable automatic mirror updates:

# Enable timer
sudo systemctl enable --now reflector.timer

# View timer status
systemctl status reflector.timer
systemctl list-timers reflector.timer

Configure reflector service at /etc/xdg/reflector/reflector.conf:

--save /etc/pacman.d/mirrorlist
--protocol https
--country US
--latest 10
--sort rate
--age 12

Manual Mirror Selection

Mirror Status

Check mirror status at archlinux.org/mirrors/status/

Key metrics: * Completion % - How up-to-date the mirror is * Delay - Time since last sync * Score - Lower is better

Test Mirror Speed

# Test download speed from specific mirror
curl -o /dev/null -w '%{speed_download}\n' \
  https://mirror.example.com/archlinux/core/os/x86_64/core.db

# Time full sync
time sudo pacman -Sy

Edit Manually

# Edit mirror list
sudo vim /etc/pacman.d/mirrorlist

# Format
Server = https://mirror.example.com/archlinux/$repo/os/$arch

Rankmirrors (Legacy)

Alternative to reflector using pacman-contrib:

sudo pacman -S pacman-contrib

# Backup and rank top 6
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist

Mirror Troubleshooting

404 Errors

# Force database refresh
sudo pacman -Syyu

# If specific mirror is bad, comment it out
sudo vim /etc/pacman.d/mirrorlist

Slow Downloads

# Enable parallel downloads in pacman.conf
sudo sed -i 's/#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf

# Re-run reflector with rate sorting
sudo reflector --country US --sort rate --save /etc/pacman.d/mirrorlist

Signature Errors

If a mirror is out of date:

# Try forcing fresh package databases
sudo rm -r /var/lib/pacman/sync
sudo pacman -Syyu

Local Mirror

For multiple Arch machines, consider a local cache:

Using pacman Cache

# Share cache via NFS or rsync
# On server
sudo pacman -Syw package  # Download without installing

# Serve via HTTP
cd /var/cache/pacman/pkg
python -m http.server 8080

darkhttpd for Cache Server

sudo pacman -S darkhttpd
darkhttpd /var/cache/pacman/pkg --port 8080