Как узнать имена переменных для debconf-set-selections?

Допустим, я хочу установить mysql из сценария, не задавая никаких вопросов о конфигурации, например, какой пароль root я хочу установить с помощью apt . Затем я бы установил переменные debconf :

 echo mysql-server-5.5 mysql-server/root_password password xyzzy | debconf-set-selections echo mysql-server-5.5 mysql-server/root_password_again password xyzzy | debconf-set-selections 

Я получил это из учебника. Что мне неясно: как парень узнал имена переменных? Откуда он знал, что ему нужно установить mysql-server-5.5 mysql-server/root_password password и mysql-server-5.5 mysql-server/root_password_again соответственно?

Я знаю, что могу извлечь пакет .deb dpkg-deb -R package.deb EXTRACTDIR/ – но я не вижу, где хранятся эти переменные.

Как мне узнать переменные debconf для любого другого пакета?

Вы можете проверить, что хранится в debconf используя debconf-get-selections . Это полезно, если вы уже выполнили установку.

Альтернативно, эти настройки используются в скриптах сопровождающего пакета . С помощью команды dpkg-deb вы запустили, они находятся в подкаталоге EXTRACTDIR .

Как пример, из lightdm :

 $ grep db_ lightdm/DEBIAN -R lightdm/DEBIAN/postrm: db_purge lightdm/DEBIAN/prerm: db_unregister shared/default-x-display-manager lightdm/DEBIAN/prerm: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/prerm: db_metaget shared/default-x-display-manager owners lightdm/DEBIAN/prerm: db_subst shared/default-x-display-manager choices "$RET" lightdm/DEBIAN/prerm: db_get shared/default-x-display-manager lightdm/DEBIAN/prerm: if db_get "$RET"/daemon_name; then lightdm/DEBIAN/prerm: db_fset shared/default-x-display-manager seen false lightdm/DEBIAN/prerm: db_input critical shared/default-x-display-manager || true lightdm/DEBIAN/prerm: db_go lightdm/DEBIAN/prerm: db_get shared/default-x-display-manager lightdm/DEBIAN/prerm: db_get "$RET"/daemon_name lightdm/DEBIAN/postinst: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/postinst: if db_get "$DEFAULT_DISPLAY_MANAGER"/daemon_name; then lightdm/DEBIAN/postinst:db_stop lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager owners; then lightdm/DEBIAN/config:if db_metaget shared/default-x-display-manager choices; then lightdm/DEBIAN/config: db_subst shared/default-x-display-manager choices "$OWNERS" || : lightdm/DEBIAN/config: db_fset shared/default-x-display-manager seen false || : lightdm/DEBIAN/config: db_set shared/default-x-display-manager "$CURRENT_DEFAULT" lightdm/DEBIAN/config: if db_get shared/default-x-display-manager; then lightdm/DEBIAN/config: db_set shared/default-x-display-manager lightdm lightdm/DEBIAN/config: db_fset shared/default-x-display-manager seen true lightdm/DEBIAN/config: db_input high shared/default-x-display-manager || : lightdm/DEBIAN/config: db_go || : lightdm/DEBIAN/config:if db_get shared/default-x-display-manager; then 

Различные функции db_* являются вспомогательными функциями для обработки debconf , полученной из /usr/share/debconf/confmodule .

Так, в случае с lightdm , shared/default-x-display-manager является важным ключом debconf .

Вы можете получить переменные для определенного установленного пакета, используя debconf-show packagename

ех.

 $ sudo debconf-show mysql-server-5.7 * mysql-server/root_password: (password omitted) * mysql-server/root_password_again: (password omitted) mysql-server-5.7/start_on_boot: true mysql-server/no_upgrade_when_using_ndb: mysql-server/password_mismatch: mysql-server-5.7/really_downgrade: false mysql-server-5.7/nis_warning: mysql-server-5.7/postrm_remove_databases: false mysql-server-5.7/installation_freeze_mode_active: 

Вы можете получить список всех установленных пакетов, которые имеют переменные в базе данных, используя debconf-show --listowners , так что если вы не уверены, какое имя пакета, вы можете сделать что-то вроде

 # debconf-show --listowners | grep mysql | xargs debconf-show * mysql-server/root_password: (password omitted) * mysql-server/root_password_again: (password omitted) mysql-server-5.7/postrm_remove_databases: false mysql-server-5.7/nis_warning: mysql-server-5.7/installation_freeze_mode_active: mysql-server/password_mismatch: mysql-server-5.7/start_on_boot: true mysql-server/no_upgrade_when_using_ndb: mysql-server-5.7/really_downgrade: false