Como descobrir os nomes das variáveis para debconf-set-selections?
On Fevereiro 13, 2021 by admin Digamos que eu queira instalar mysql
a partir de um script sem que sejam feitas perguntas de configuração, como qual raiz senha que desejo definir por apt
. Eu, então, predefiniria as debconf
variáveis:
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
Recebi isso de um tutorial. O que não está claro para mim: como o cara descobriu os nomes das variáveis? Como ele soube que precisava definir mysql-server-5.5 mysql-server/root_password password
e mysql-server-5.5 mysql-server/root_password_again
respectivamente?
Sei que poderia extrair o pacote .deb
emitindo dpkg-deb -R package.deb EXTRACTDIR/
– mas não vejo onde essas variáveis estão armazenadas.
Como eu descobriria as debconf
variáveis de qualquer outro pacote?
Resposta
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 do pacote . Com o comando dpkg-deb
que você executou, eles estão no DEBIAN
subdiretório 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
Os vários db_*
funções são funções auxiliares para lidar com debconf
, obtidas em /usr/share/debconf/confmodule
.
Então , no caso de lightdm
, shared/default-x-display-manager
é uma chave debconf
importante.
Resposta
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 de qual é o nome do pacote, pode 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
Deixe uma resposta