Вопрос или проблема
В те времена, когда мы использовали yum-cron вместо dnf-automatic, обновления пакетов применялись еженедельно для большинства пакетов, но ежечасно для критических обновлений безопасности. Я пытаюсь сделать что-то подобное с dnf-automatic, но в документации это особо не упоминается. Могу ли я добавить несколько секций [timer]
в dnf-automatic.timer
? Или есть другой способ это осуществить?
Ответ или решение
Возможность автоматического обновления пакетов на системах Linux значительно упрощает поддержание безопасности и актуальности системы. Когда вы пользовались yum-cron, вы могли настраивать его для выполнения обновлений на разных таймерах, что позволяло применять критически важные обновления безопасности с большей частотой по сравнению с обычными. С переходом на dnf-automatic в Fedora и других системах, основанных на RPM, возникает вопрос о том, возможно ли аналогичным образом управлять частотой выполнения обновлений.
Теория
dnf-automatic — это инструмент для автоматизации процесса обновления пакетов, который заменил yum-cron в более новых версиях систем Fedora и других дистрибутивах, использующих DNF. Он позволяет запускать автоматические проверки и установки обновлений без участия пользователя. Обычно для этого используется системный таймер systemd, который упрощает управление расписанием выполнения задач.
Одним из вопросов, которые часто вызывают замешательство, является возможность использования нескольких таймеров в dnf-automatic.timer для выполнения разных типов обновлений с разной частотой. В документации к dnf-automatic детально не описано использование нескольких таймеров, что может создать затруднения для администраторов, ищущих решение, аналогичное yum-cron.
Пример
Допустим, у вас есть задача — настроить dnf-automatic так, чтобы он выполнял обновления пакетов каждую неделю, но критически важные обновления безопасности применялись каждый час. В классическом сценарии yum-cron это решение могло бы быть реализовано использованием различных cron-заданий. Однако, с учетом особенностей systemd, конфигурация dnf-automatic требует иного подхода.
Применение
К сожалению, dnf-automatic.timer по умолчанию не поддерживает несколько секций [Timer] внутри одного файла таймера для разных расписаний. В systemd каждая задача, или таймер, должна иметь собственный файл конфигурации. Оптимальным решением в вашем случае будет создание нескольких таймеров, каждый из которых будет ссылается на один и тот же сервис dnf-automatic:
-
Создайте два таймера — один для еженедельных обновлений, другой для часовых обновлений безопасности.
-
Настройте первый таймер для выполнения стандартных обновлений:
-
Создайте файл
/etc/systemd/system/dnf-automatic-weekly.timer
с указанием расписания выполнения:[Unit] Description=Run dnf-automatic weekly [Timer] OnCalendar=weekly Persistent=true [Install] WantedBy=timers.target
-
-
Настройте второй таймер для выполнения критических обновлений:
-
Создайте файл
/etc/systemd/system/dnf-automatic-hourly.timer
с указанием расписания выполнения:[Unit] Description=Run dnf-automatic hourly for critical updates [Timer] OnCalendar=hourly Persistent=true [Install] WantedBy=timers.target
-
-
Настройте соответствующие сервисы: оба таймера могут ссылаться на один и тот же сервис dnf-automatic. Однако, для большей гибкости, вы можете настроить два разных сервиса, если захотите кастомизировать их поведение (например, использовать разные конфигурационные файлы).
-
Активируйте таймеры:
- Выполните команды для активации обоих таймеров:
sudo systemctl enable --now dnf-automatic-weekly.timer sudo systemctl enable --now dnf-automatic-hourly.timer
- Выполните команды для активации обоих таймеров:
Таким образом, используя подход с несколькими таймерами systemd, вы сможете гибко управлять расписанием автоматических обновлений пакетов, аналогично решению, доступному ранее через yum-cron. Это позволит вашей системе всегда оставаться в актуальном и безопасном состоянии, снижая возможные риски безопасности благодаря своевременному применению критических патчей.