debconf (программный пакет)

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Дизайн debconf позволяет добавлять модули оболочки (front-ends) для ответов на вопросы настройки. В качестве примеров таких оболочек можно привести dialog, одну для readline, одну, использующую текстовый редактор, одну для KDE, одну для GNOME[1], 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

Примечания

[править | править код]
  1. The GNOME Journal: Simplified Package Management in Ubuntu Hoary. Дата обращения: 17 сентября 2010. Архивировано 17 июля 2011 года.