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

Ссылки по теме

- Зеркала
- Pacman (Русский)

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

Category:

- Package management (Русский)