Reflector
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.