6.9. Автоматическое Обновление
Поскольку Falcot Corp имеет много компьютеров, но ограничена в численности сотрудников, его администраторы пытаются как можно больше автоматизировать процесс обновления. Поэтому программы, которым поручили выполнение этих процессов, должны выполняться без вмешательства человека.
6.9.1. Конфигурирование dpkg
As we have already mentioned (see sidebar
УГЛУБЛЯЕМСЯ Как избежать вопросов по поводу конфигурационных файлов),
dpkg
can be instructed not to ask for confirmation when replacing a configuration file (with the
--force-confdef --force-confold
options). Interactions can, however, have three other sources: some come from APT itself, some are handled by
debconf
, and some happen on the command line due to package configuration scripts (sometimes handled by
ucf).
6.9.2. Настройка APT (конфигурирование)
В случае применения APT - это просто: опция -y
(или --assume-yes
) скажет APT-у, что надо принимать во внимание - на все вопросы ответ пользователя будет “да”.
При применении debconf
- эта программа заслуживает больше подробностей. С самого начала эта программа была создана контролировать уместные в данной ситуации вопросы а также их объем, отображаемые пользователю, а также то, как они показаны. Поэтому ее конфигурация нуждается в минимальном уровне приоритета для вопросов; только вопросы свыше минимального уровня приоритета она отобразит. debconf
допускает ответы по умолчанию для вопросов (определенные сопровождающими пакетов), которые она пропустит.
The other relevant configuration element is the interface used by the frontend. If you choose noninteractive
out of the choices, all user interaction is disabled. If a package tries to display an informative note, it will be sent to the administrator by email.
Для переконфигурирования debconf
, используйте программу dpkg-reconfigure
из пакета debconf; соответствующая команда - dpkg-reconfigure debconf
. Запомните, что сконфигурированные переменные могут быть временно переопределены другими переменными среды окружения, когда понадобится (для примера, переменная DEBIAN_FRONTEND
управляет оболочкой интерфейса, как описано в странице руководства debconf(7) ).
6.9.4. Управление Взаимодействием Через Командную Строку
Последний ключ взаимодействия, а такой случай нельзя исключить, это запуск конфигурационных скриптов через программу dpkg
. К сожалению в этом случае нет стандартных решений, и нет ответов в подавляющем большинстве случаев какие ответы лучше, чем другие (то есть в данном случае трудно дать совет - здесь все индивидуально, надо быть очень внимательными).
Общий подход заключается в подавлении стандартной информации на вводе, перенаправляя пустое содержание /dev/null
внутрь этого с командой command </dev/null
, или поддерживать это с нескончаемый потоком новых строк. Ни один из этих методов не является на 100 % надежным, но они как правило приводят по умолчанию ответ - использовать, так как большинство скриптов полагает при отсутствии ответа, что это является одобрением значения по умолчанию.
6.9.5. Удивительно хорошая Комбинация
Комбинируя предыдущие элементы, можно создать небольшой, но довольно надежный скрипт, который сможет автоматически обрабатывать обновление.
Пример 6.5. Не-интерактивный скрипт обновления
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade