Reflector

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Reflector is a Python script which can retrieve the latest mirror list from the Arch Linux Mirror Status page, filter the most up-to-date mirrors, sort them by speed and overwrite the file /etc/pacman.d/mirrorlist.

Installation

Install the reflector package.

Usage

Warning:
  • 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 options, run the following command:

$ reflector --help

Examples

See reflector(1) § EXAMPLES. Examples overwriting /etc/pacman.d/mirrorlist need to be run as root.

Tip: To include Worldwide servers, pass an empty string to the country flag. For example, to include France, Germany, and Worldwide mirrors, one should use --country 'France,Germany,'.[1]

Automation

systemd service

Reflector ships with a reflector.service. The service will run reflector with the parameters specified in /etc/xdg/reflector/reflector.conf. The default options in this file should serve as a good starting point and example.

For example, to select the 5 most up-to-date mirrors from France and Germany that support HTTPS and overwrite /etc/pacman.d/mirrorlist, use

/etc/xdg/reflector/reflector.conf
--save /etc/pacman.d/mirrorlist
--country France,Germany
--protocol https
--latest 5

Enable reflector.service to run Reflector on boot. To run it immediately, start the service.

Note: reflector.service depends on a network wait service to be configured via network-online.target.

systemd timer

Reflector provides a systemd timer (reflector.timer) that starts the #systemd service reflector.service weekly. The schedule can be changed by editing reflector.timer.

First edit the configuration file as described in #systemd service. After you have updated the configuration file, start and enable reflector.timer.

To refresh the mirrorlist ahead of schedule, start reflector.service.

pacman hook

Tango-edit-cut.pngThis section is being considered for removal.Tango-edit-cut.png

Reason: pacman-mirrorlist is not updated regularly, invoking reflector only because some mirror on the other side of the globe was added or removed does not make sense. It also does not make sense to provide a hook just because it is possible, since the package provides a timer-based automation. Automating the removal of mirrorlist.pacnew does not make sense; if you do not want the file at all, use NoExtract in pacman.conf. (Discuss in Talk:Reflector#Pacman hook)

You can create a pacman hook that will start reflector.service 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 'systemctl start reflector.service; [ -f /etc/pacman.d/mirrorlist.pacnew ] && rm /etc/pacman.d/mirrorlist.pacnew'

Set desired mirror options in /etc/xdg/reflector/reflector.conf as described in #systemd service.

This is also provided by reflector-mirrorlist-updateAUR.

See also