Как настроить автоматическое обновление пакетов на Ubuntu VPS?

В этой статье разберём:

  • какие обновления бывают в Ubuntu;
  • как проверить доступные обновления вручную;
  • как установить и включить unattended-upgrades;
  • как настроить автоматическую установку обновлений безопасности;
  • как проверить, что автообновления действительно работают;
  • где смотреть логи и какие ошибки бывают.

Какие обновления бывают в Ubuntu

В Ubuntu пакеты обновляются через систему apt. Обновления бывают разными, и важно не смешивать всё в одну кучу.

  • Обновления безопасности — исправляют уязвимости в системных пакетах, OpenSSH, OpenSSL, ядре, библиотеках и других компонентах.

  • Обычные обновления — исправляют ошибки, улучшают работу пакетов, но не всегда критичны для безопасности.

  • Обновления ядра — могут требовать перезагрузки VPS.

  • Обновления сервисов — например, Nginx, Apache, PHP-FPM, MariaDB. После них служба может быть перезапущена.

На сервере безопаснее автоматически ставить в первую очередь security-обновления, а крупные изменения контролировать вручную. Так меньше шанс получить сюрприз на боевом VPS.

Проверяем обновления вручную

Перед настройкой автоматических обновлений полезно вручную посмотреть, что вообще доступно на сервере.

sudo apt update
apt list --upgradable

Первая команда обновляет список пакетов, вторая показывает, какие пакеты можно обновить.

Если список большой, не спешите сразу запускать полное обновление. Для начала можно посмотреть, есть ли среди пакетов важные системные компоненты: openssh-server, openssl, linux-image, nginx, apache2, php, mariadb.

Проверка доступных обновлений через apt на Ubuntu VPS

Важно: команда apt list --upgradable только показывает список. Она ничего не устанавливает.

Устанавливаем unattended-upgrades

Для автоматической установки обновлений в Ubuntu используется пакет unattended-upgrades. Он может быть уже установлен, но лучше проверить и поставить явно.

sudo apt update
sudo apt install -y unattended-upgrades apt-listchanges

Пакет unattended-upgrades отвечает за автоматическую установку обновлений, а apt-listchanges помогает показывать важные изменения в пакетах.

Проверим, что пакет установлен:

dpkg -l | grep unattended-upgrades
Установка unattended-upgrades на Ubuntu VPS

Включаем автоматические обновления

Основной файл, который включает автоматическое обновление списков пакетов и запуск unattended-upgrades:

/etc/apt/apt.conf.d/20auto-upgrades

Откроем его:

sudo nano /etc/apt/apt.conf.d/20auto-upgrades

Вставляем или проверяем такие строки:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Что это значит:

  • Update-Package-Lists "1" — ежедневно обновлять список доступных пакетов;

  • Unattended-Upgrade "1" — ежедневно запускать автоматическую установку разрешённых обновлений.

После сохранения можно проверить содержимое файла:

cat /etc/apt/apt.conf.d/20auto-upgrades
Файл 20auto-upgrades для автоматических обновлений Ubuntu

Настраиваем, какие обновления устанавливать автоматически

Главный файл настроек unattended-upgrades находится здесь:

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

Открываем:

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

Внутри есть блок Unattended-Upgrade::Allowed-Origins. Для базовой безопасной схемы обычно достаточно включить security-обновления:

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
};

В некоторых версиях Ubuntu строки могут выглядеть чуть иначе и быть уже добавлены. Главное — чтобы была разрешена ветка -security.

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

Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

Эти строки помогают автоматически убирать пакеты, которые больше не нужны после обновлений.

Настройка файла 50unattended-upgrades для security-обновлений

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

Настройка автоматической перезагрузки

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

В файле /etc/apt/apt.conf.d/50unattended-upgrades есть параметры:

Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Варианты:

  • "false" — сервер сам не перезагружается, вы делаете это вручную;

  • "true" — сервер может перезагрузиться автоматически, если это нужно после обновлений;

  • Automatic-Reboot-Time — время перезагрузки, например ночью.

Для большинства VPS лучше оставить:

Unattended-Upgrade::Automatic-Reboot "false";

А необходимость перезагрузки проверять вручную:

test -f /var/run/reboot-required && cat /var/run/reboot-required

Если файл существует, значит системе нужна перезагрузка.

Проверяем работу без реального обновления

Перед тем как доверить серверу автоматические обновления, полезно сделать тестовый запуск. Он покажет, какие действия были бы выполнены.

sudo unattended-upgrade --dry-run --debug

Ключи:

  • --dry-run — тестовый режим, без реальной установки пакетов;

  • --debug — подробный вывод, чтобы было видно, что проверяется.

Вывод может быть довольно длинным. Это нормально. Важно, чтобы не было явных ошибок конфигурации.

Тестовый запуск unattended-upgrade в режиме dry-run

Проверяем таймеры автоматических обновлений

В современных Ubuntu автоматические задачи apt часто запускаются через systemd-таймеры. Посмотреть их можно так:

systemctl list-timers | grep apt

Обычно там можно увидеть таймеры вроде:

apt-daily.timer
apt-daily-upgrade.timer

Они отвечают за регулярное обновление списков пакетов и запуск обновлений.

Если нужно посмотреть статус конкретного таймера:

systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timer
Проверка таймеров apt-daily через systemd

Где смотреть логи автоматических обновлений

Если нужно проверить, что именно обновлялось автоматически, смотрите логи unattended-upgrades:

sudo ls -l /var/log/unattended-upgrades/
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log

Также полезны общие логи apt:

sudo tail -n 50 /var/log/apt/history.log
sudo tail -n 50 /var/log/apt/term.log

В них можно увидеть, какие пакеты были установлены или обновлены, когда это произошло и были ли ошибки.

Логи автоматических обновлений Ubuntu VPS

Как вручную обновлять сервер вместе с автообновлениями

Автоматические security-обновления не отменяют ручное обслуживание сервера. Время от времени всё равно полезно заходить и проверять общую ситуацию.

Стандартная ручная проверка:

sudo apt update
apt list --upgradable

Ручное обновление всех пакетов:

sudo apt upgrade

Удаление больше не нужных зависимостей:

sudo apt autoremove

Проверка необходимости перезагрузки:

test -f /var/run/reboot-required && cat /var/run/reboot-required

Такой подход удобен: критичные security-патчи ставятся автоматически, а крупные обновления вы контролируете вручную.

Что лучше не делать

  • Не включайте автоматическое обновление всего подряд без понимания

    На боевом сервере обновление любого пакета может затронуть сервис. Лучше начать с security-обновлений.

  • Не включайте автоматическую перезагрузку днём

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

  • Не забывайте про резервные копии

    Перед крупными ручными обновлениями лучше иметь актуальный бэкап или snapshot VPS.

  • Не игнорируйте логи

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

Частые ошибки и решения

  • unattended-upgrade: command not found

    Пакет не установлен:

    sudo apt update
    sudo apt install -y unattended-upgrades
  • Автообновления не запускаются

    Проверьте файл 20auto-upgrades и таймеры:

    cat /etc/apt/apt.conf.d/20auto-upgrades
    systemctl list-timers | grep apt
  • Нет логов в /var/log/unattended-upgrades/

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

    sudo unattended-upgrade --dry-run --debug
  • После обновления требуется перезагрузка

    Проверьте:

    test -f /var/run/reboot-required && cat /var/run/reboot-required

    Если сервер боевой, перезагрузку лучше запланировать на удобное время.

Итоги

  • Разобрались, какие обновления бывают в Ubuntu и почему security-патчи важны для VPS.

  • Установили unattended-upgrades и включили автоматическую проверку обновлений.

  • Настроили файл 20auto-upgrades и проверили параметры 50unattended-upgrades.

  • Проверили работу через --dry-run, systemd-таймеры и логи.

  • Разобрали, почему автоматическую перезагрузку лучше включать осторожно.

Вывод: автоматические обновления на Ubuntu VPS полезны, если настроены аккуратно. Оптимальный вариант для большинства серверов — автоматически ставить обновления безопасности, а крупные обновления и перезагрузки выполнять вручную в удобное время.

Оставить комментарий