Como descobrir os nomes das variáveis para debconf-set-selections?

0

Digamos que eu queira instalar o mysql de um script sem que nenhuma pergunta de configuração seja feita, como a senha raiz que desejo definir por apt . Eu então pré-configuraria as variáveis 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

Eu peguei isso de um tutorial. O que não está claro para mim: como o cara descobriu os nomes das variáveis? Como ele sabia que tinha que definir mysql-server-5.5 mysql-server/root_password password e mysql-server-5.5 mysql-server/root_password_again , respectivamente?

Eu sei que eu poderia extrair o pacote .deb emitindo dpkg-deb -R package.deb EXTRACTDIR/ - mas não vejo onde essas variáveis são armazenadas.

Como eu descobriria as variáveis debconf para qualquer outro pacote?

    
por chevallier 20.07.2018 / 10:57

2 respostas

1

Você pode inspecionar o que é armazenado em debconf usando debconf-get-selections . Isso é útil se você já tiver feito a instalação.

Como alternativa, essas configurações são usadas nos scripts do mantenedor de pacotes . Com o comando dpkg-deb executado, eles estão no subdiretório DEBIAN de EXTRACTDIR .

Como exemplo, de 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

As várias funções db_* são funções auxiliares para manipular debconf , obtidas de /usr/share/debconf/confmodule .

Portanto, no caso de lightdm , shared/default-x-display-manager é uma chave debconf importante.

    
por 20.07.2018 / 11:06
2

Você pode obter as variáveis para um pacote instalado específico usando debconf-show packagename

ex.

$ 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:

Você pode obter uma lista de todos os pacotes instalados que possuem variáveis no banco de dados usando debconf-show --listowners , portanto, se você não tiver certeza do nome do pacote, poderá fazer algo como

# 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
    
por 20.07.2018 / 18:42