Автоматические обновления
Автоматизация обновлений
Обновление 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
, вариативны и не подразумевают стандартного решения для исключения вопросов.
Есть популярные методы, которые позволяют выбрать ответы по умолчанию. Это сработает для скриптов, которые в случае отсутствия ответа пользователя принимают дефолтные ответы.
-
Перенаправить содержимое
/dev/null
с помощью конструкциикоманда\</dev/null
, чтобы не давать скриптам стандартный поток ввода. -
Отправить им бесконечный поток переносов строки.
Комбинация вышеперечисленных методов
Это относительно надёжный скрипт для автоматических обновлений на основе вышеперечисленных элементов:
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade