Difference between revisions of "Reflector"

From ArchWiki
Jump to: navigation, search
m
(Examples: removed "--verbose" switch from last two examples to make them shorter and less repetitive)
 
(60 intermediate revisions by 28 users not shown)
Line 1: Line 1:
 
[[Category:Package management]]
 
[[Category:Package management]]
 
[[es:Reflector]]
 
[[es:Reflector]]
 +
[[fr:Reflector]]
 +
[[it:Reflector]]
 +
[[ja:Reflector]]
 
[[ko:Reflector]]
 
[[ko:Reflector]]
 
[[ru:Reflector]]
 
[[ru:Reflector]]
 
[[zh-CN:Reflector]]
 
[[zh-CN:Reflector]]
[http://xyne.archlinux.ca/projects/reflector/ Reflector] is a script which can retrieve the latest mirror list from the [https://www.archlinux.org/mirrors/status/ MirrorStatus] page, filter the most up-to-date mirrors, sort them by speed and overwrite the file {{Ic|/etc/pacman.d/mirrorlist}}.  
+
{{Related articles start}}
 +
{{Related|Mirrors}}
 +
{{Related|Pacman}}
 +
{{Related articles end}}
 +
[http://xyne.archlinux.ca/projects/reflector/ Reflector] is a script which can retrieve the latest mirror list from the [https://www.archlinux.org/mirrors/status/ MirrorStatus] page, filter the most up-to-date mirrors, sort them by speed and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}.  
  
 
== Installation ==
 
== Installation ==
  
[[pacman|Install]] the {{pkg|reflector}} package which is available in the [[Official Repositories|official repositories]].
+
[[Install]] the {{Pkg|reflector}} package.
  
 
== Usage ==
 
== Usage ==
  
{{Warning|Please back up your {{ic|/etc/pacman.d/mirrorlist}} file first}}
+
{{Warning|
 +
* In the following examples, {{ic|/etc/pacman.d/mirrorlist}} will be overwritten. Make a backup before proceeding.
 +
* Make sure the resulting {{ic|/etc/pacman.d/mirrorlist}} does not contain entries that you consider untrustworthy before syncing or updating with [[Pacman]].}}
  
First back up your {{ic|/etc/pacman.d/mirrorlist}}
+
To see all of the available commands, run the following command:
# cp -vf /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
+
  
The following command will filter the first five mirrors, sort them by speed and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}:
+
  # reflector --help
  # reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist
+
  
The following command will verbosely rate the 200 most recently synchronized HTTP servers, sort them by download rate, and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}:
+
=== Examples ===
# reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist
+
  
To see all of the available commands, run the following command:
+
Verbosely rate and sort the five most recently synchronized mirrors by download speed, and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}:
  # reflector --help
+
 
 +
  # 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 {{ic|/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 the US, sort them by download speed, and overwrite the file {{ic|/etc/pacman.d/mirrorlist}}:
 +
 
 +
# reflector --country 'United States' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
 +
 
 +
=== Pacman Hook ===
 +
 
 +
You can also create a pacman hook that will run ''reflector'' and remove the {{ic|.pacnew}} file created every time {{Pkg|pacman-mirrorlist}} gets an upgrade.
 +
 
 +
{{hc|/etc/pacman.d/hooks/mirrorupgrade.hook|<nowiki>
 +
[Trigger]
 +
Operation = Upgrade
 +
Type = Package
 +
Target = pacman-mirrorlist
 +
 
 +
[Action]
 +
Description = Updating pacman-mirrorlist with reflector and removing pacnew...
 +
When = PostTransaction
 +
Depends = reflector
 +
Exec = /usr/bin/env sh -c "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; if [[ -f /etc/pacman.d/mirrorlist.pacnew ]]; then rm /etc/pacman.d/mirrorlist.pacnew; fi"
 +
</nowiki>}}
 +
Make sure to substitute in your desired arguments for ''reflector''.
 +
 
 +
See [[User:Allan/Pacman Hooks]] and [[DeveloperWiki:Pacman Hooks]] for more info on pacman hooks.
 +
 
 +
=== Systemd Service ===
 +
 
 +
{{hc|/etc/systemd/system/reflector.service|<nowiki>
 +
[Unit]
 +
Description=Pacman mirrorlist update
 +
 
 +
[Service]
 +
Type=oneshot
 +
ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist
 +
</nowiki>}}
 +
 
 +
Then [[start]]ing {{ic|reflector.service}} will update your mirrorlist.
 +
 
 +
To update your mirrorlist every time your computer boots you can enable the following service definition.
 +
 
 +
{{hc|/etc/systemd/system/reflector.service|<nowiki>
 +
[Unit]
 +
Description=Pacman mirrorlist update
 +
Requires=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
 +
</nowiki>}}
 +
 
 +
Make sure you [http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ activate the appropriate services] so that {{ic|network.target}} really reflects your network status.
 +
 
 +
=== Systemd Timer ===
 +
 
 +
If you want to run {{ic|reflector.service}} on a weekly basis:
 +
 
 +
{{hc|/etc/systemd/system/reflector.timer|<nowiki>
 +
[Unit]
 +
Description=Run reflector weekly
 +
 
 +
[Timer]
 +
OnCalendar=weekly
 +
RandomizedDelaySec=12h
 +
Persistent=true
 +
 
 +
[Install]
 +
WantedBy=timers.target
 +
</nowiki>}}
 +
 
 +
And then just [[start]] the {{ic|reflector.timer}}.
 +
 
 +
==== AUR package ====
 +
 
 +
[[Install]] the {{AUR|reflector-timer}} package to run ''reflector'' daily, or install the {{AUR|reflector-timer-weekly}} to run it weekly.
 +
 
 +
===== reflector-timer =====
 +
 
 +
The default configuration is:
 +
{{hc|/usr/share/reflector-timer/reflector.conf|<nowiki>
 +
AGE=6
 +
COUNTRY=Germany
 +
LATEST=30
 +
NUMBER=20
 +
SORT=rate
 +
</nowiki>}}
 +
 
 +
To override this configuration, edit {{ic|/etc/conf.d/reflector.conf}}:
 +
{{hc|/etc/conf.d/reflector.conf|<nowiki>
 +
COUNTRY=US
 +
</nowiki>}}
 +
 
 +
Be sure to [[enable]] {{ic|reflector.timer}}.
 +
 
 +
===== reflector-timer-weekly =====
 +
 
 +
The default configuration is:
 +
{{hc|/etc/reflector.conf|<nowiki>
 +
--save /etc/pacman.d/mirrorlist
 +
--country China
 +
--sort rate
 +
</nowiki>}}
 +
 
 +
Each line (except that begins with '#') should be valid {{ic|reflector}} option.
  
{{Warning|Make sure the mirror list does not contain strange entries before syncing or updating with pacman.}}
+
Be sure to [[enable]] {{ic|reflector.timer}}.

Latest revision as of 02:35, 4 November 2016

Related articles

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.

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 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 the US, sort them by download speed, and overwrite the file /etc/pacman.d/mirrorlist:

# reflector --country 'United States' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Pacman Hook

You can also 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 = /usr/bin/env sh -c "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; if [[ -f /etc/pacman.d/mirrorlist.pacnew ]]; then rm /etc/pacman.d/mirrorlist.pacnew; fi"

Make sure to substitute in your desired arguments for reflector.

See User:Allan/Pacman Hooks and DeveloperWiki:Pacman Hooks for more info on pacman hooks.

Systemd Service

/etc/systemd/system/reflector.service
[Unit]
Description=Pacman mirrorlist update

[Service]
Type=oneshot
ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist

Then starting reflector.service will update your mirrorlist.

To update your mirrorlist every time your computer boots you can enable the following service definition.

/etc/systemd/system/reflector.service
[Unit]
Description=Pacman mirrorlist update
Requires=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

Make sure you activate the appropriate services so that network.target really reflects your network status.

Systemd Timer

If you want to run reflector.service on a weekly basis:

/etc/systemd/system/reflector.timer
[Unit]
Description=Run reflector weekly

[Timer]
OnCalendar=weekly
RandomizedDelaySec=12h
Persistent=true

[Install]
WantedBy=timers.target

And then just start the reflector.timer.

AUR package

Install the reflector-timerAUR package to run reflector daily, or install the reflector-timer-weeklyAUR to run it weekly.

reflector-timer

The default configuration is:

/usr/share/reflector-timer/reflector.conf
AGE=6
COUNTRY=Germany
LATEST=30
NUMBER=20
SORT=rate

To override this configuration, edit /etc/conf.d/reflector.conf:

/etc/conf.d/reflector.conf
COUNTRY=US

Be sure to enable reflector.timer.

reflector-timer-weekly

The default configuration is:

/etc/reflector.conf
--save /etc/pacman.d/mirrorlist
--country China
--sort rate

Each line (except that begins with '#') should be valid reflector option.

Be sure to enable reflector.timer.