4.11.2 Настройка оповещения и автоматического обновления пакетов в РЕД ОС 7.3

В РЕД ОС 7.3 для оповещения/автоматического обновления пакетов используется dnf-automatic.

Устанавливаем dnf-automatic командой:

# dnf install dnf-automatic

Затем настраиваем конфигурационный файл /etc/dnf/automatic.conf. По умолчанию dnf-automatic будет проверять наличие обновлений один раз в сутки и скачивать их в каталог /var/cache/dnf/.

# /etc/dnf/automatic.conf

В разделе [commands] определяем, какие обновления будут устанавливаться автоматически:

[commands]
# What kind of upgrade to perform:
# default = all available upgrades
# security = only the security upgrades
upgrade_type = default
random_sleep = 0

# To just receive updates use dnf-automatic-notifyonly.timer

# Whether updates should be downloaded when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
download_updates = yes

# Whether updates should be applied when they are available, by
# dnf-automatic.timer. notifyonly.timer, download.timer and
# install.timer override this setting.
apply_updates = no

Существует два варианта обновления ОС:

  • default – представляет из себя обычное обновление пакетов;
  • security – представляет из себя обновление основных модулей безопасности.

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

download_updates = yes
apply_updates = yes

Параметр download_updates отвечает за загрузку обновлений (только загрузка, без установки).

Параметр apply_updates указывает, применять ли загруженные обновления или нет. По умолчанию установлено: «apply_updates = no», так как полностью доверять автоматическому обновлению не стоит. Для того, чтобы сработало значение «yes» — это же значение должно быть установлено и в download_updates, так как если обновления не загружены, то их неоткуда устанавливать.

Параметр random_sleep задает генерируемую случайным образом задержку в минутах, между временем запуска утилиты dnf-automatic и до её исполнения. Если значение random_sleep более 0, то каждый раз после запуска случайным образом выбирается задержка в интервале между 0 и заданным числом минут. Этот параметр служит для предотвращения ситуации, когда множество операционных систем одновременно будут пытаться получить обновление. По умолчанию установлено: random_sleep = 360 (360 минут = 6 часам).

Примечание! Если определенные пакеты не требуется обновлять (как вручную, так и автоматически), то можно добавить их в исключение. Для этого необходимо:

  • Установить плагин для dnf — versionlock командой:
dnf install python3-dnf-plugin-versionlock
  • Добавить исключения для доступных пакетов, соответствующих спецификации, следующей командой:
dnf versionlock exclude <package_name>

Просмотреть список текущих записей блокировки версий можно с помощью команды:

dnf versionlock list
 или 
dnf versionlock

Пример блокировки пакетов kernel-lt и php:

dnf versionlock exclude php kernel-lt

Последняя проверка окончания срока действия метаданных: 0:53:11 назад, Пн 29 мар 2021 15:32:06.

Добавление исключения на: kernel-lt-0:5.10.24-2.el7.*
Добавление исключения на: kernel-lt-0:5.10.1-1.el7.*
Добавление исключения на: php-0:7.4.11-2.el7.*

Чтобы удалить пакет из исключения, выполните следующую команду:

dnf versionlock delete <package_name>

Чтобы полностью очистить блокировку пакетов, выполните следующую команду:

dnf versionlock clear

Для отправки уведомлений о прошедших обновлениях на почту перейдите к блоку [email] в файле automatic.conf.
Отредактируйте следующие параметры:

  • email_from — отправитель сообщения;
  • email_to — кому будут отправлены сообщения;
  • email_host — имя хоста, к которому будет подключаться утилита, чтобы отправить сообщения.

В блоке [emitters] поменяйте параметр emit_via c stdio на email.

emit_via = stdio

Если emit_via будет пустым или None, то это аналогично параметру «update_messages = no», и в этом случае сообщения выводится не будут.

По умолчанию emit_via установлен в emit_via = stdin. В этом случае сообщения будут хранится по пути /var/spool/mail/<имя_пользователя>. Чтобы их просмотреть, используйте утилиту cat:

cat /var/spool/mail/<имя_пользователя>

Также в блоке [emitters] доступен параметр system_name. Он служит для записи названия системы, которое будет отображаться в сообщениях. По умолчанию system_name настроено так: system_name = None, это означает, что названием будет служить hostname операционной системы.

Далее нужно добавить соответствующий сервис в автозагрузку и запустить его. После этого обновления нужного типа будут устанавливаться в систему
автоматически.

systemctl enable --now dnf-automatic.timer

Проверить статус таймеров можно командой:

systemctl list-timers *dnf-*

При более детальном изучении таймера, можно заметить, что автоматические обновления настроены на 6 утра каждого дня. Данные конфигурации отражены в файле /usr/lib/systemd/system/dnf-automatic.timer.

Содержимое файла по умолчанию:

[Unit]
Description=dnf-automatic timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true

[Install]
WantedBy=timers.target

Чтобы задать свое время, требуется изменить строку:

OnCalendar=*-*-* 6:00

После применения изменений выполните команды перезапуска таймера:

systemctl daemon-reload
systemctl restart dnf-automatic

Настройка уведомлений пользователя через апплет dnfdragora-updater

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

dnf install dnfdragora-updater

Предварительно, до использования данного апплета, требуется запустить dnfdragora (если это действие еще не совершалось после установки ОС) для создания кэша пакетов.

Запустить данный апплет можно из меню:

При получении обновления пользователь получит уведомление следующего вида:

Данный апплет имеет интуитивно понятное контекстное меню:

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Print Friendly, PDF & Email