debconf — утилита для выполнения системных задач по настройке в Debian-подобных дистрибутивах Linux. Изначально разработана для дистрибутива Debian GNU/Linux и тесно интегрирована с системой управления пакетов Debian dpkg.

Пока пакеты устанавливаются, debconf задаёт пользователю вопросы, которые определяют содержание системных конфигурационных файлов, ассоциированных с этим пакетом. После того как пакет установлен, можно вернуться и изменить настройку пакета командой dpkg-reconfigure или другими программами, выполняющие такую же функцию, например как Synaptic.

Дизайн debconf позволяет добавлять модули оболочки (front-ends) для ответов на вопросы настройки. В качестве примеров таких оболочек можно привести dialog, одну для readline, одну, использующую текстовый редактор, одну для KDE, одну для GNOME, a Python front-end API и т. д.. Оригинальная реализация debconf написана на Perl. В ходе разработки Debian-Installer, была разработана новая реализация на C, которая была названа cdebconf. Новая реализация в настоящее время используется только в инсталляторе, но должна в конечном счёте полностью заменить оригинальную. Обе реализации используют один и тот же протокол для связи между debconf front-end и кодом клиента («confmodule»); это простой строко-ориентированный протокол, подобный общим протоколам Интернета.

debconf физически не настраивает пакеты, но задаёт пользователю некоторые вопросы по настройке, хранящиеся в файле .templates, под руководством сценариев мейнтейнера пакета (.config, .postinst, etc.). Обычно, сценарий .config используется, чтобы задавать вопросы, в то время как .postinst применяет настроечные изменения к распакованному пакету в соответствии с ответами; как бы то ни было, это может варьироваться в зависимости от технических требований. Ответы пользователя на вопросы, задаваемые debconf, сохраняются (кэшируются) в базе данных debconf.

Пример использования Пакет tzdata предоставляет настройку часового пояса. При установке пакета пользователю с помощью debconf-скрипта будет предложено выбрать свой континент и город. Чтобы перенастроить, можно выполнить команду sudo dpkg-reconfigure tzdata и будет показан такой диалог:

После сохраненния настроек их можно будет посмотреть с помощью команды debconf-show: $ debconf-show tzdata tzdata/Zones/Pacific: tzdata/Zones/Asia: tzdata/Zones/Arctic: * tzdata/Zones/Europe: Minsk tzdata/Zones/America: tzdata/Zones/Antarctica: * tzdata/Zones/Etc: UTC tzdata/Zones/Africa: tzdata/Zones/Atlantic: tzdata/Zones/US: tzdata/Zones/Australia: * tzdata/Areas: Europe tzdata/Zones/Indian:

Чтобы найти ключи выбора, можно ещё использовать команду debconf-get-selections | grep tzdata. Но она показывает ключи уже после установки пакета.

Изначально все ключи выбора и их переводы хранятся в установочном deb-файле tzdata.deb/control.tar.gz/./templates.

Изначальную конфигурацию можно провести перед установкой пакета. Это необходимо для автоматизированных скриптов, которые выполняются без участия человека в неинтерактивном режиме. Например, при установке MySQL можно задать имя пользователя и пароль заранее: sudo echo 'mysql-server mysql-server/root_password password your_password' | debconf-set-selections sudo echo 'mysql-server mysql-server/root_password_again password your_password' | debconf-set-selections то же самое можно сделать, используя многострочную команду: cat << EOF | sudo debconf-set-selections mysql-server mysql-server/root_password password your_password mysql-server mysql-server/root_password_again password your_password EOF

Проверить можно командой:

$ sudo debconf-get-selections | grep ^mysql mysql-server mysql-server/root_password_again password your_password mysql-server mysql-server/root_password password your_password

После этого можно установить пакет с опцией подтверждения -y sudo apt -y install mysql-server

Примечания

Ссылки Исходный код

— сайт мейнтейнера

Категория:Dpkg Категория:Debian Категория:Утилиты конфигурирования Unix