# Reflector

From ArchWiki
Jump to navigation Jump to search
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.

Related articles

- Mirrors
- Pacman

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

Since version 2020.8, Reflector ships with an enableable `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.

### systemd timer

Since version 2020.8, 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

This section is being considered for removal.

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

- Reflector thread on the Arch Linux Forums
- Upstream project page including changelog

Category:

- Package management

Hidden category:

- Sections flagged with Template:Remove