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