Reflector (Français)
Reflector est un script qui permet de récupérer la liste des miroirs depuis la page MirrorStatus, puis de les filtrer selon diverses règles et de les ordonner dans un certain ordre. Enfin, le résultat peut être sauvé dans /etc/pacman.d/mirrorlist
.
Installation
Vous pouvez installer le paquet reflector avec Pacman.
pacman -Syu reflector
Usage
- Créez une sauvegarde de
/etc/pacman.d/mirrorlist
avant de continuer :
cp -vf /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
- Assurez-vous toujours que
/etc/pacman.d/mirrorlist
ne contienne que des miroirs que vous considérez sûrs avant de lancer pacman pour une opération de synchronisation ou de mise à jour.
Pour obtenir l'ensemble des options fournies par reflector :
reflector --help
Exemples
Exemple 1
Cette commande filtre les 5 miroirs qui ont été mis à jour tout récemment, les trie par vitesse puis écrase /etc/pacman.d/mirrorlist
avec ces nouveaux miroirs :
reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist
Exemple 2
Cette commande va trier les 200 miroirs http synchronisés récemment puis les trier par vitesse dans /etc/pacman.d/mirrorlist
:
reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist
Exemple 3
Cette commande va trier les 5 miroirs http les plus récemment synchronisés en France puis les trier par vitesse et enfin sauvegarder le résultat dans /etc/pacman.d/mirrorlist
:
reflector --verbose --country 'France' -l 5 -p http --sort rate --save /etc/pacman.d/mirrorlist
Avec systemd-timer
On peut lancer reflector
régulièrement grâce à systemd grâce aux unités suivantes. Voir le wiki anglophone : systemd/cron functionality.
reachable-retry@
utilise un biais moche : utiliser forking
au lieu de simple
. Il n'y a cependant à la date de rédaction rien d'autre qui permette de faire ce que fait cette unité.On crée un timer pour reflector.
/etc/systemd/system/timer-reflector.timer
[Unit] Description=Timer for reflector [Timer] # OnCalendar prend hourly, daily, weekly, monthly, yearly ou d'autres considération plus précises OnCalendar=daily Unit=reflector.service [Install] WantedBy=multi-user.target
On n'oublie pas de l'activer au démarrage :
systemctl enable timer-reflector.timer
L'unité suivante sera lancée avant reflector et reflector attendra que l'hôte précisé après le '@' soit ping-able.
/etc/systemd/system/reachable-retry@.service
[Unit] Description=Test if %i is reachable # Customize to your own needs, with network.target or whatever works less worse with you After=systemd-networkd-wait-online.service [Service] Type=forking ExecStart=/usr/bin/ping -c1 %i Restart=on-failure [Install] WantedBy=multi-user.target
/etc/systemd/system/reflector.service
[Unit] Description=Update mirorlist # Fire up the tester Requires=reachable-retry@www.archlinux.org.service # Wait for it to return SUCCESS After=reachable-retry@www.archlinux.org.service [Service] # Copied from wiki Nice=19 IOSchedulingClass=2 IOSchedulingPriority=7 Type=oneshot # Customize to your own needs ExecStart=/usr/bin/reflector -i (fr|nl|be). -f 5 --save /etc/pacman.d/mirrorlist
De cette façon, on a un minuteur qui lance reflector régulièrement mais reflector ne se lancera que dès qu'il peut effectivement atteindre la page MirrorStatus : ça évite les soucis d'échec à cause du réseau qui n'est pas disponible lors du lancement de reflector (et donc reflector n'entre pas en Failed State, entraînant avec lui le timer).
Alternatives
Script pour télécharger depuis le générateur de mirrorlist
Se baser sur les miroirs les plus rapides uniquement n'est pas une bonne idée, car ils peuvent être incomplets et ne pas être à jour. Utiliser les miroirs triés par vitesse puis par leur statut est une meilleure idée pour mettre à jour un système depuis des miroirs 100% synchros, rapides et à jour.
armrr
est un script pour sauvegarder le /etc/pacman.d/mirrorlist
précédent puis installer une version à jour depuis le générateur de mirrorlist Pacman. Le générateur de mirrorlist Pacman (Pacman Mirrorlist Generator) trie les miroirs par pays, disponibilité et vitesse.
Pour l'installer, utilisez le paquet AUR armrr-gitAUR[broken link: package not found], ou téléchargez-le avec curl -O https://raw.githubusercontent.com/Gen2ly/armrr/master/armrr
. Lancez-le avec armrr <country code>
(armrr CA
pour le Canada par exemple) ou simplement armrr
pour obtenir une liste des code pays dispos. Tapez armrr -h,--help
pour plus de détails.