Reflector (Português)

From ArchWiki
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.
Status de tradução: Esse artigo é uma tradução de Reflector. Data da última tradução: 2020-07-03. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Reflector é um script que pode recuperar a lista de espelhos mais recente da página MirrorStatus, filtrar os espelhos mais atualizados, classificá-los por velocidade e substituir o arquivo /etc/pacman.d/mirrorlist.

Instalação

Instale o pacote reflector.

Uso

Atenção:
  • Nos exemplos a seguir, /etc/pacman.d/mirrorlist vai ser sobrescrito. Faça um backup antes de proceder.
  • Certifique-se de que o /etc/pacman.d/mirrorlist resultante não contenha entradas que você considere não confiáveis antes de sincronizar ou atualizar com pacman.

Para ver todos os comandos disponíveis, execute o seguinte comando:

# reflector --help

Exemplos

Classifica e ordena de forma detalhada os cinco espelhos sincronizados mais recentemente pela velocidade do download e sobrescreve o arquivo /etc/pacman.d/mirrorlist:

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

Seleciona os 200 espelhos HTTP ou HTTPS sincronizado mais recentemente, ordena-os pela velocidade de download e sobrescreve o arquivo /etc/pacman.d/mirrorlist:

# reflector --latest 200 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Seleciona os espelhos HTTPS sincronizados dentro das últimas 12 horas e localizados na França ou Alemanha, ordena-os pela velocidade de download e sobrescreve o arquivo /etc/pacman.d/mirrorlist:

# reflector --country France --country Germany --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

Automação

Hook do pacman

Você pode criar um hook do pacman que executará reflector e removerá o arquivo .pacnew criado toda vez que pacman-mirrorlist recebe uma atualização.

/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 "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"

Certifique-se de substituir nos argumentos desejados para o refletor.

Serviço de systemd

Este é um exemplo de uma unit de serviço que espera que a rede esteja ativa e online antes de executar o refletor:

/etc/systemd/system/reflector.service
[Unit]
Description=Pacman mirrorlist update
Wants=network-online.target
After=network-online.target nss-lookup.target

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

[Install]
WantedBy=multi-user.target

Ao iniciar reflector.service, a lista de espelhos será atualizada. Para atualizar a lista de espelhos sempre que o computador inicializar, habilite o serviço.

Nota: Para obter mais informações sobre a implementação da dependência de rede, consulte systemd (Português)#Executando serviços após a rede estar ativa.

Timer de systemd

Se você deseja executar reflector.service semanalmente, crie um timer associado. Por exemplo:

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

[Timer]
OnCalendar=Mon *-*-* 7:00:00
RandomizedDelaySec=15h
Persistent=true

[Install]
WantedBy=timers.target

E basta iniciar o reflector.timer.

Pacote reflector-timer

Instale reflector-timerAUR[link quebrado: package not found] para executar o reflector semanalmente.

A configuração padrão, que pode ser editada para atender necessidades específicas de cada um, é:

/usr/share/reflector-timer/reflector.conf
AGE=6
COUNTRY=Germany
LATEST=30
NUMBER=20
SORT=rate
### remova uma entrada, se você não deseja-o como um protocolo disponível
PROTOCOL1='-p http'
PROTOCOL2='-p https'
PROTOCOL3='-p ftp'

Certifique-se de habilitar o reflector.timer.

Tarefa do cron

Para atualizar o mirrorlist diariamente, considere o seguinte:

/etc/cron.daily/mirrorlist
#!/bin/bash

# Obtém a lista por país
/usr/bin/reflector -c "India" -p http --sort rate > /etc/pacman.d/mirrorlist

# Trabalha com as alternativas
/usr/bin/reflector -p http  --latest 20 -p https -p ftp --sort rate >> /etc/pacman.d/mirrorlist

Veja também