Reflector

Aus wiki.archlinux.de
Wechseln zu: Navigation, Suche

Reflector ist ein Skript, mit dem die neueste Spiegelserver-Liste von der MirrorStatus-Seite heruntergeladen, nach den aktuellsten Spiegelservern gefiltert und nach Geschwindigkeit sortiert werden kann.

Installation

Installiere das Paket reflector aus dem Repository community:

# pacman -S reflector

Verwendung

Achtung: In den folgenden Beispielen wird /etc/pacman.d/mirrorlist überschrieben. Lege deshalb eine Sicherheitskopie dieser Datei an!

Um alle verfügbaren Optionen von Reflector anzuzeigen, führe diesen Befehl aus:

$ reflector --help

Beispiele

Die ersten fünf Spiegelserver auf der Liste nach Downloadrate sortieren und die neue Mirrorlist speichern:

# reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist

Mit laufenden Fortschrittsmeldungen die 200 aktuellsten HTTP-Spiegelserver nach Downloadrate sortieren und die neue Mirrorlist speichern:

# reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist

Mit laufenden Fortschrittsmeldungen die 200 aktuellsten HTTP-Spiegelserver aus Deutschland nach Downloadrate sortieren und die neue Mirrorlist speichern:

# reflector --verbose --country 'Germany' -l 200 -p https --sort rate --save /etc/pacman.d/mirrorlist

Systemd-Service

/etc/systemd/system/reflector.service
[Unit]
Description=Pacman-Mirrorlist updaten

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

Starte dann reflector.service, um die Mirrorlist zu aktualisieren:

# systemctl start reflector.service

Um die Mirrorliste bei jedem Systemstart zu aktualisieren, kannst du diesen Service verwenden.

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

Stell sicher, dass du die erforderlichen Dienste aktivierst, so dass network-online.target auch tatsächlich den Netzwerkstatus wiedergibt. Aktiviere dann den Service:

# systemctl enable reflector.service

Systemd-Timer

Wenn du Reflector wöchentlich ausführen möchtest, lege den oben genannten Service an und zusätzlich diesen Timer:

/etc/systemd/system/reflector.timer
[Unit]
Description=Reflector wöchentlich ausführen

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

[Install]
WantedBy=timers.target

Aktiviere dann einfach den Timer:

# systemctl enable reflector.timer

Pacman-Hook

Du kannst auch einen Pacman-Hook erstellen, der Reflector bei jedem Update von pacman-mirrorlist ausführt und die mirrorlist.pacnew löscht.

/etc/pacman.d/hooks/mirrorupgrade.hook
[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist

[Action]
Description = Update die Mirrorlist mit reflector und lösche die pacnew...
When = PostTransaction
Depends = reflector
Exec = /usr/bin/bash -c "reflector --country 'Germany' -l 200 --sort rate --save /etc/pacman.d/mirrorlist && [[ -f /etc/pacman.d/mirrorlist.pacnew ]] && rm /etc/pacman.d/mirrorlist.pacnew"

Passe den Aufruf von Reflector deinen Vorstellungen an.

AUR-Paket

Installiere das Paket reflector-timerAUR aus dem AUR, um Reflector täglich auszuführen, oder reflector-timer-weeklyAUR für einen wöchentlichen Aufruf.

reflector-timer

Die Standardkonfiguration ist:

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

Um diese Konfiguration zu überschreiben, bearbeite /etc/conf.d/reflector.conf:

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

Vergiss nicht, den reflector.timer zu aktivieren:

# systemctl enable reflector.timer
reflector-timer-weekly

Die Standardkonfiguration ist:

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

Jede Zeile (ausgenommen solche, die mit # beginnen) sollte eine gültige reflector-Kommandozeilenoption sein.

Vergiss nicht, den reflector.timer zu aktivieren:

# systemctl enable reflector.timer