Reflector (Русский)

From ArchWiki
Jump to navigation Jump to search
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.

Reflector — скрипт, который автоматизирует процесс настройки зеркал, включающий в себя загрузку свежего списка зеркал со страницы Mirror Status, фильтрацию из них наиболее обновленных, сортировку по скорости и сохранение в /etc/pacman.d/mirrorlist.

Установка

Установите reflector, доступный в официальных репозиториях.

Использование

Важно:
  • Обязательно сделайте резервную копию файла /etc/pacman.d/mirrorlist:
# cp -vf /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
  • После обновления /etc/pacman.d/mirrorlist, взгляните на содержимое файла и убедитесь, что он не содержит подозрительных зеркал перед тем, как выполнять синхронизацию базы данных пакетов pacman.

Чтобы увидеть список всех доступных опций, наберите

# reflector --help

Примеры

Пример 1

Следующая команда отфильтрует пять зеркал с поддержкой https, отсортирует их по скорости и обновит файл mirrorlist:

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

Пример 2

Эта команда подробно выведет список 200 наиболее недавно обновленных HTTPS-зеркал, отсортирует их по скорости загрузки и обновит mirrorlist:

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

Пример 3

То же, что и в предыдущем примере, но будут взяты только зеркала, расположенные в Соединенных Штатах:

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

Автоматизация

Pacman hook

Вы можете создать хук pacman, который будет запускать reflector и удалять файл .pacnew после каждого обновления pacman-mirrorlist.

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

[Action]
Description = Обновление списка зеркал с помощью reflector и удаление pacnew файла...
When = PostTransaction
Depends = reflector
Exec = /bin/sh -c "reflector --country 'United States' --protocol https --latest 10 --age 24 --sort rate --save /etc/pacman.d/mirrorlist;  rm -f /etc/pacman.d/mirrorlist.pacnew"

Удостоверьтесь, что подставили необходимые вам аргументы.

Служба systemd

/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

Теперь запуск # systemctl start reflector разово обновит ваш mirrorlist.

Для обновления списка зеркал при каждой загрузке системы, используйте следующий файл юнита:

/etc/systemd/system/reflector.service
[Unit]
Description=Pacman mirrorlist update
Requires=network.target
After=network.target

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

[Install]
RequiredBy=network.target

И включите службу reflector.service.

Для того, чтобы она работала, цель network.target должна правильно означать, что установлено интернет-соединение.

Таймер systemd

Если вы хотите запускать reflector.service, скажем, раз в неделю:

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

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

[Install]
WantedBy=timers.target

Сохраните файл и включите таймер:

# systemctl enable reflector.timer