Reflector
Reflector is a script which can retrieve the latest mirror list from the MirrorStatus page, filter the most up-to-date mirrors, sort them by speed and overwrite the file /etc/pacman.d/mirrorlist
.
Contents
Installation
Install the reflector package.
Usage
- In the following examples,
/etc/pacman.d/mirrorlist
will be overwritten. Make a backup before proceeding. - Make sure the resulting
/etc/pacman.d/mirrorlist
does not contain entries that you consider untrustworthy before syncing or updating with Pacman.
To see all of the available commands, run the following command:
# reflector --help
Examples
Verbosely rate and sort the five most recently synchronized mirrors by download speed, and overwrite the file /etc/pacman.d/mirrorlist
:
# reflector --verbose --latest 5 --sort rate --save /etc/pacman.d/mirrorlist
Select the 200 most recently synchronized HTTP or HTTPS mirrors, sort them by download speed, and overwrite the file /etc/pacman.d/mirrorlist
:
# reflector --latest 200 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist
Select the HTTPS mirrors synchronized within the last 12 hours and located in either France or Germany, sort them by download speed, and overwrite the file /etc/pacman.d/mirrorlist
:
# reflector --country France --country Germany --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
Automation
Pacman hook
You can create a pacman hook that will run reflector and remove the .pacnew file created every time pacman-mirrorlist gets an upgrade.
/etc/pacman.d/hooks/mirrorupgrade.hook
[Trigger] Operation = Upgrade Type = Package Target = pacman-mirrorlist [Action] Description = Updating pacman-mirrorlist with reflector and removing pacnew... When = PostTransaction Depends = reflector Exec = /bin/sh -c "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"
Make sure to substitute in your desired arguments for reflector.
Systemd service
This is an example of a service unit that waits for the network to be up and online before running reflector:
/etc/systemd/system/reflector.service
[Unit] Description=Pacman mirrorlist update Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist [Install] RequiredBy=multi-user.target
starting reflector.service
will update the mirrorlist. To update the mirrorlist every time the computer boots, enable the service.
Systemd timer
If you want to run reflector.service
on a weekly basis, create an associated .timer. For example:
/etc/systemd/system/reflector.timer
[Unit] Description=Run reflector weekly [Timer] OnCalendar=Mon *-*-* 7:00:00 RandomizedDelaySec=15h Persistent=true [Install] WantedBy=timers.target
And then just start the reflector.timer
.
Reflector-timer package
Install reflector-timerAUR to run reflector weekly.
The default configuration, which can be edited to fit one's needs, is:
/usr/share/reflector-timer/reflector.conf
AGE=6 COUNTRY=Germany LATEST=30 NUMBER=20 SORT=rate ### remove an entry if you don't want it as available protocol PROTOCOL1='-p http' PROTOCOL2='-p https' PROTOCOL3='-p ftp'
Be sure to enable reflector.timer
.
Cron task
To update the mirrorlist daily, consider the following:
/etc/cron.daily/mirrorlist
#!/bin/bash # Get the country thing /usr/bin/reflector -c "India" -p http --sort rate > /etc/pacman.d/mirrorlist # Work through the alternatives /usr/bin/reflector -p http --latest 20 -p https -p ftp --sort rate >> /etc/pacman.d/mirrorlist