Как настроить автоматическое обновление пакетов на сервере Linux
Автоматическое обновление пакетов — это важная часть безопасности серверов. Особенно когда дело касается обновлений безопасности. Не все админы хотят вручную отслеживать каждый патч, и здесь на помощь приходят утилиты вроде unattended-upgrades
, dnf-automatic
и yum-cron
.
В этой статье разберём, как настроить автообновления для разных дистрибутивов Linux.
Зачем настраивать автоматическое обновление?
- Безопасность — критические баги закрываются как можно быстрее.
- Поддержка — минимизируете риски при переходе на новую версию вручную.
- Меньше ручной работы — особенно важно, если вы админите много серверов.
Для Debian/Ubuntu: unattended-upgrades
Установка
sudo apt update
sudo apt install unattended-upgrades
Активация
sudo dpkg-reconfigure --priority=low unattended-upgrades
После этого будет создана базовая конфигурация.
Основной конфиг
Путь: /etc/apt/apt.conf.d/50unattended-upgrades
Пример:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Параметр -security
— обязательно. Можно также добавить -updates
и -backports
.
Расписание
Путь: /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Значениe "1"
означаeт "ежедневно".
Для Fedora, RHEL, CentOS: dnf-automatic
Установка
sudo dnf install dnf-automatic
Конфигурация
Путь: /etc/dnf/automatic.conf
Пример:
[commands]
upgrade_type = security
random_sleep = 0
download_updates = yes
apply_updates = yes
[emitters]
emit_via = motd
[base]
debuglevel = 1
Можно выбрать upgrade_type = default
если хотите ставить всё, не только security-апдейты.
Если вы хотите скачивать, но не ставить обновления (например, для ручной проверки), используйте такие настройки:
download_updates = yes
apply_updates = no
Включение службы
sudo systemctl enable --now dnf-automatic.timer
Для CentOS 7 / RHEL 7: yum-cron
Установка
sudo yum install yum-cron
Конфигурация
Путь: /etc/yum/yum-cron.conf
Важные параметры:
update_cmd = security
apply_updates = yes
Также можно настроить логирование и уведомления по email.
Активация
sudo systemctl enable --now yum-cron
Проверка работы
Вы можете проверить журнал через journalctl
:
journalctl -u dnf-automatic.timer
journalctl -u unattended-upgrades
А для yum-cron:
cat /var/log/yum.log
Как настроить отправку уведомлений об обновлениях?
Для unattended-upgrades
В /etc/apt/apt.conf.d/50unattended-upgrades
:
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailOnlyOnError "true";
Понадобится установленный MTA (например, postfix
, exim
, ssmtp
, msmtp
).
Для dnf-automatic (Fedora/RHEL 8+)
В /etc/dnf/automatic.conf
:
[emitters]
emit_via = email
email_from = root@yourdomain.com
email_to = admin@yourdomain.com
email_host = localhost
По умолчанию email_host = localhost
, но можно указать внешний SMTP-сервер. Опять же, нужен настроенный MTA.
Для yum-cron (CentOS/RHEL 7)
В /etc/yum/yum-cron.conf
:
email_from = root@yourdomain.com
email_to = admin@yourdomain.com
email_host = localhost
Что учитывать при включении автообновлений
- Не обновляйте ядро автоматически, если сервер критичный — может потребоваться ручная перезагрузка.
- Тестируйте сначала на staging-сервере, особенно если ставите всё подряд (
default
вместоsecurity
). - Настройте уведомления, чтобы быть в курсе того, что ставится (через mailx или systemd email hooks).
Заключение
Автоматическое обновление пакетов — простой способ закрыть базовые дыры в безопасности без лишнего напряга. Подходящие инструменты есть под любой дистрибутив: unattended-upgrades
, dnf-automatic
, yum-cron
. Настроил — и забыл. Но всё равно лучше следить за логами — хотя бы раз в неделю.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний