Reflector (Русский)

From ArchWiki
Jump to navigation Jump to search

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

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 hook, который будет запускать 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

Пакет Reflector-timer

Установите reflector-timerAUR, который будет запускать reflector раз в неделю.

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

/usr/share/reflector-timer/reflector.conf
AGE=6
COUNTRY='United States'
LATEST=30
NUMBER=20
SORT=rate
### Удалите те протоколы, которые не хотите использовать
PROTOCOL1='-p http'
PROTOCOL2='-p https'
PROTOCOL3='-p ftp'
PROTOCOL4='-p rsync'

Затем включите таймер reflector.timer.