Перейти к основному содержимому
Автоматические обновления

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

Автоматизация обновлений

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

Один из инструментов — apticron из одноимённого пакета.

Он запускается ежедневно через cron и обновляет список доступных пакетов. `apticron отправляет по электронной почте список пакетов, которые не обновлены до последней доступной версии, вместе с изменениями в новых версиях.

Также apticron автоматически скачивает доступные обновления, но не устанавливает их. Администратор должен установить их сам, но наличие пакетов в кеше apt позволяет выполнить операцию быстрее.

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

Скрипт cron

Cкрипт /etc/cron.daily/apt-compat содержится в пакете apt.

Скрипт запускается ежедневно в неинтерактивном режиме с помощью cron.

В /etc/apt/apt.conf.d/10periodic нужно определить основные конфигурационные переменные:

  • APT::Periodic::Update-Package-Lists — частота в днях, с которой следует обновлять список пакетов.

  • APT::Periodic::Download-Upgradeable-Packages — частота в днях, с которой следует скачивать пакеты.

  • APT::Periodic::AutocleanInterval — частота удаления ненужных пакетов из кеша (пакеты, которые более не включены ни в один репозиторий). Для более тонкой настройки очистки кеша можно использовать другие опции. Их можно посмотреть в скрипте /usr/lib/apt/apt.systemd.daily.

  • APT::Periodic::Unattended-Upgrade — автоматизирует установку обновлений для настроенных пакетов.

примечание

При использовании apticron эти APT::Periodic::Update-Package-Lists и APT::Periodic::Download-Upgradeable-Packages не нужны, так как эта функциональность включена в apticron.

Настройка автоматических обновлений пакетов

По умолчанию опция автоматической установки обновлений касается только обновлений безопасности.

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

Команда dpkg-reconfigure -plow unattended-upgrades устанавливает опцию автоматических обновлений через debconf.

Можно установить пакет apt-listbugs: он предотвратит автоматическую установку пакетов с известными багами.

Настройка dpkg

dpkg — это низкоуровневая утилита для установки, удаления и получения информации о .deb пакетах.

Команда dpkg с опциями --force-confdef и --force-confold пропускает вопросы перед заменой конфигурационных файлов. Но вопросы могут возникнуть из других утилит и скриптов, например:

  • apt,
  • debconf,
  • ucf.

Настройка apt

Опция -y (или --assume-yes) принимает, что ответ на все вопросы — «да».

Настройка debconf

debconf имеет возможность регулировать приоритет и количество вопросов, а также то, как они будут заданы пользователю.

Чтобы перенастроить debconf, используйте команду dpkg-reconfigure debconf. Настройки:

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

Настраиваемые значения можно временно переопределять с помощью переменных окружения, когда это необходимо. Например, DEBIAN_FRONTEND определяет интерфейс, как описано на странице руководства man debconf (7).

Обработка конфигурационных скриптов

Конфигурационные скрипты, запускаемые dpkg, вариативны и не подразумевают стандартного решения для исключения вопросов.

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

  1. Перенаправить содержимое /dev/null с помощью конструкции команда\</dev/null, чтобы не давать скриптам стандартный поток ввода.

  2. Отправить им бесконечный поток переносов строки.

Комбинация вышеперечисленных методов

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

Скрипт для неинтерактивных обновлений
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade