6.9. Автоматические Обновления
Поскольку у корпорации Falcot много компьютеров, но мало персонала, её администраторы стараются сделать обновления как можно более автоматическими. Поэтому программы, отвечающие за эти процессы, должны работать без вмешательства человека.
6.9.1. Конфигурирование dpkg
Как мы уже упоминали (см. вкладку
УГЛУБЛЯЕМСЯ Как избежать вопросов по поводу конфигурационных файлов),
dpkg
можно указать не запрашивать подтверждение при замене файла конфигурации (опция
--force-confdef --force-confold
). Однако взаимодействия могут иметь три других источника: некоторые исходят от самого APT, некоторые обрабатываются
debconf
, а некоторые происходят в командной строке из-за сценариев конфигурации пакета (иногда обрабатывается
ucf).
6.9.2. Настройка APT (конфигурирование)
В случае применения APT - это просто: опция -y
(или --assume-yes
) скажет APT-у, что надо принимать во внимание - на все вопросы ответ пользователя будет “yes”.
Случай debconf
заслуживает более подробного описания. Эта программа с самого начала была предназначена для контроля актуальности и объёма вопросов, отображаемых пользователю, а также способа их отображения. Вот почему её конфигурация требует минимального приоритета вопросов; отображаются только вопросы выше минимального приоритета. debconf
допускает ответы по умолчанию для вопросов (определённые сопровождающими пакетов), которые она пропустит.
Другим важным элементом конфигурации является интерфейс, используемый фронтендом. Если вы выберете noninteractive
из всех вариантов, то всё взаимодействие с пользователем будет отключено. Если пакет попытается отобразить информационное сообщение, оно будет отправлено администратору по электронной почте.
Для переконфигурирования debconf
, используйте dpkg-reconfigure
из пакета debconf; соответствующая команда - dpkg-reconfigure debconf
. Запомните, что сконфигурированные переменные могут быть временно переопределены другими переменными среды окружения, при необходимости (для примера, переменная DEBIAN_FRONTEND
контролирует интерфейс, как описано в странице руководства debconf(7) ).
6.9.4. Управление Взаимодействием Через Командную Строку
Последний ключ взаимодействия, а такой случай нельзя исключить, это запуск конфигурационных скриптов через программу dpkg
. К сожалению в этом случае нет стандартных решений, и нет ответов в подавляющем большинстве случаев какие ответы лучше, чем другие (то есть в данном случае трудно дать совет - здесь все индивидуально, надо быть очень внимательными).
Общий подход - подавление стандартного ввода путём перенаправления в него пустого содержимого /dev/null
командой command </dev/null
, или перенаправить на ввод бесконечный поток новых строк. Ни один из этих методов не является надежным на 100 %, но они обычно приводят к использованию ответов по умолчанию, поскольку большинство сценариев рассматривают отсутствие ответа как принятие значения по умолчанию.
Комбинируя предыдущие элементы, можно создать небольшой, но довольно надежный скрипт, который сможет автоматически обрабатывать обновление.
Пример 6.5. Не-интерактивный скрипт обновления
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade