Как настроить автоматическое обновление системы через Unattended Upgrades

Поддержание системы в актуальном состоянии — основа безопасности Linux. Но ежедневно вручную проверять и устанавливать обновления нереалистично, особенно когда речь идёт о нескольких серверах. На помощь приходит unattended-upgrades — штатный механизм автоматической установки обновлений в Debian и Ubuntu.

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

Что такое Unattended Upgrades и зачем это нужно

Unattended Upgrades — это служба, которая периодически проверяет наличие доступных обновлений и применяет их без участия пользователя. Особенно полезна для:

  • Серверов — чтобы критические уязвимости закрывались оперативно, даже если вы не заходите на машину.

  • Рабочих станций — для минимизации рутины при сохранлении контроля.

  • Контейнеров и облачных ВМ — где важно сократить время от выпуска патча до его установки.

По умолчанию unattended-upgrades настроен консервативно: он обновляет только пакеты из репозитория -security и не выполняет автоматическую перезагрузку. Однако эти параметры легко изменить — и мы это сделаем.

Установка пакетов

Пакет unattended-upgrades обычно предустановлен, но лучше убедиться в этом явно.

1. Проверьте, установлен ли пакет

dpkg -l unattended-upgrades

Если вывод показывает no packages found, установите его.

2. Установка самого пакета и вспомогательных инструментов

sudo apt update

sudo apt install unattended-upgrades apt-listchanges apt-utils

  • apt-listchanges — перед установкой покажет журнал изменений пакетов. Можно отключить, но на серверах часто оставляют включённым для отслеживания важных нововведений.

  • apt-utils — набор вспомогательных утилит APT.

Выполнение команд apt install unattended-upgrades в терминале Linux
Установка пакета unattended-upgrades через терминал

Первоначальная настройка

Самый быстрый способ включить базовую автоматическую установку — использовать утилиту dpkg-reconfigure.

sudo dpkg-reconfigure -plow unattended-upgrades

В интерактивном окне выберите Да (Yes), чтобы разрешить автоматическую загрузку и установку стабильных обновлений.

После этого будет автоматически создан (или дополнен) файл /etc/apt/apt.conf.d/20auto-upgrades. Выглядит он так:

APT::Periodic::Update-Package-Lists «1»;

APT::Periodic::Download-Upgradeable-Packages «1»;

APT::Periodic::AutocleanInterval «7»;

APT::Periodic::Unattended-Upgrade «1»;

  • Update-Package-Lists — частота обновления списка пакетов (1 означает ежедневно).

  • Download-Upgradeable-Packages — загружать доступные обновления (1 — ежедневно).

  • AutocleanInterval — удалять устаревшие пакеты из кэша (каждые 7 дней).

  • Unattended-Upgrade — непосредственно применять обновления (1 — ежедневно).

Если файл не создался, вы можете добавить эти строки вручную через любой текстовый редактор.

Интерактивное окно dpkg-reconfigure для включения автоматических обновлений
Включение автоматической установки обновлений через dpkg-reconfigure

Тонкая настройка: главный конфигурационный файл

Все ключевые параметры хранятся в /etc/apt/apt.conf.d/50unattended-upgrades. Откройте его для редактирования:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Рассмотрим основные секции.

Фрагмент конфигурационного файла 50unattended-upgrades с настройками allowed-origins и автоматической перезагрузки
Ключевые параметры конфигурации в файле 50unattended-upgrades

1. Какие репозитории обновлять (Allowed Origins)

В секции Unattended-Upgrade::Allowed-Origins указаны источники, откуда будут браться обновления.

Unattended-Upgrade::Allowed-Origins {

      «${distro_id}:${distro_codename}»;

      «${distro_id}:${distro_codename}-security»;

};

По умолчанию включены обновления безопасности (-security) и базового репозитория. Чтобы разрешить обновления из -updates (обычно содержат исправления ошибок), раскомментируйте строку:

«${distro_id}:${distro_codename}-updates»;

❗ Для production-серверов обычно оставляют только -security, чтобы минимизировать риск неожиданных изменений.

2. Автоматическая перезагрузка

Если было обновлено ядро или другие критичные компоненты, после установки пакетов может потребоваться перезагрузка. Unattended Upgrades позволяет управлять этим поведением.

Unattended-Upgrade::Automatic-Reboot «true»;

Когда параметр установлен в true, система будет перезагружаться при необходимости. По умолчанию он отключён (false), что безопаснее для серверов.

Можно задать время перезагрузки:

Unattended-Upgrade::Automatic-Reboot-Time «02:00»;

В этом случае перезагрузка произойдёт в указанное время (в локальной временной зоне).

⚠️ Внимание: Если вы разрешаете перезагрузку, учтите возможность потери соединения с сервером в этот момент. Для критичных серверов лучше оставить ручное управление перезагрузкой.

3. Очистка неиспользуемых зависимостей

Unattended-Upgrade::Remove-Unused-Dependencies «true»;

Автоматически удаляет пакеты, которые больше не нужны. Экономит дисковое пространство.

4. Настройка уведомлений по электронной почте

Чтобы получать отчёты о применённых обновлениях или ошибках, укажите адрес электронной почты:

Unattended-Upgrade::Mail «admin@example.com»;

Также можно управлять детализацией отправки через параметр Unattended-Upgrade::MailReport:

  • «always» — отправлять письмо при каждом запуске, даже если обновлений не было.

  • «only-on-error» — уведомлять только в случае сбоя.

  • «on-change» — отправлять только если были реальные изменения (применены обновления или произведены какие-то действия). Это значение по умолчанию и наиболее сбалансированно для большинства систем.

Если вы выбрали уведомления, убедитесь, что на вашем сервере настроена отправка почты (например, через postfix или mailx). В противном случае письма никуда не уйдут, а в логах появится ошибка.

Настройка периодичности (systemd timers)

В современных версиях Ubuntu и Debian для запуска unattended-upgrades используются системные таймеры systemd:

  • apt-daily.timer — загрузка списков пакетов и новых версий.

  • apt-daily-upgrade.timer — непосредственно установка обновлений.

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

systemctl status apt-daily.timer apt-daily-upgrade.timer

Интервалы выполнения рандомизированы, чтобы избежать одновременной нагрузки на зеркала. Обычно они заданы в диапазоне 6:00–7:00 утра. При необходимости частоту можно скорректировать, но для большинства случаев стандартные настройки оптимальны.

Тестирование работы

После внесения изменений в конфигурацию обязательно проверьте, всё ли работает корректно.

Сухой запуск (dry‑run)

sudo unattended-upgrades —dry-run —debug

Эта команда смоделирует процесс: покажет, какие пакеты могли бы быть обновлены, но реально их не установит. Если вы видите список пакетов, значит конфигурация верна и автоматические обновления будут применяться.

Проверка логов

Основные журналы находятся в /var/log/unattended-upgrades/:

ls -la /var/log/unattended-upgrades/

В файле unattended-upgrades.log содержится история всех операций — какие пакеты были установлены и не возникло ли ошибок.

Дополнительную информацию можно получить из системного журнала:

grep -i «unattended-upgrades» /var/log/syslog | tail -20

Более тонкое управление

Отключение автоматического обновления для отдельных пакетов

Если некоторые пакеты вы хотите обновлять только вручную (например, базу данных или веб-сервер), добавьте их в чёрный список:

Unattended-Upgrade::Package-Blacklist {

       «mysql-server»;

       «nginx»;

       «docker-ce»;

};

Также можно использовать регулярные выражения:

«linux-.*»; # блокирует все обновления ядра

Ограничение: только определённые пакеты

Вместо чёрного списка можно использовать белый список. Раскомментируйте соответствующую секцию и перечислите пакеты, которые разрешено обновлять:

Unattended-Upgrade::Package-Whitelist {

      «openssl»;

      «libssl.*»;

      «openssh-.*»;

};

Графическая настройка (для десктопа)

Если вы используете Ubuntu с рабочим столом GNOME, можно настроить автоматическую установку обновлений через графический интерфейс.

  1. Запустите Программы и обновления (update-manager) из терминала или меню.

  2. Перейдите на вкладку Обновления.

  3. В выпадающем списке Автоматически проверять обновления выберите Ежедневно.

  4. Для параметра Когда есть обновления безопасности выберите Загружать и устанавливать автоматически.

Этот способ приведёт к тем же изменениям в конфигурационных файлах, что и ручная настройка через терминал.

Часто задаваемые вопросы (FAQ)

Нужно ли устанавливать apt-listchanges?

Необязательно, но полезно. Он отображает важную информацию об изменениях в пакетах, особенно на серверах. Если вы не хотите получать такие уведомления, этот пакет можно пропустить.

Почему после настройки ничего не обновляется автоматически?

Проверьте:

  • Значание Unattended-Upgrade «1» в файле 20auto-upgrades.

  • Указаны ли правильные Allowed-Origins в 50unattended-upgrades.

  • Запустите dry‑run для диагностики.

  • Посмотрите логи на наличие ошибок отправки почты или отсутствия интернета.

Как проверить, действительно ли работают автоматические обновления?

Запустите sudo unattended-upgrades —dry-run —debug. Если в выводе видите пакеты, которые были бы обновлены — всё работает.

Можно ли обновлять и обычные пакеты (не только security)?

Да, достаточно раскомментировать строку «${distro_id}:${distro_codename}-updates»; в секции Allowed-Origins. Однако для production-сред такая настройка обычно не рекомендуется из-за риска неожиданных изменений.

Что делать, если пакет не обновляется, хотя должен?

Причина может быть в чёрном списке (Package-Blacklist), в неправильной секции Allowed-Origins или в том, что обновление требует ручного вмешательства (например, изменения конфигурации). Изучите логи в /var/log/unattended-upgrades/ для деталей.

Заключение

Настройка unattended-upgrades — важный шаг к обеспечению безопасности и стабильности вашей системы. Благодаря этому инструменту вы сможете автоматически применять критические обновления, не отвлекаясь на рутинные операции.

Краткий чек-лист:

  1. Установите пакет.

  2. Включите автоматические обновления через dpkg-reconfigure или графический интерфейс.

  3. Настройте нужные репозитории в 50unattended-upgrades.

  4. При необходимости настройте уведомления по почте и автоматическую перезагрузку.

  5. Проверьте работу через dry‑run и логи.

Автоматические обновления — это баланс между безопасностью и контролем. Правильно настроенный unattended-upgrades позволит вам не беспокоиться о критических уязвимостях, оставаясь в курсе всех изменений.