Comment trouver les noms de variables pour debconf-set-selections?
On février 13, 2021 by admin Disons que je veux installer mysql
à partir dun script sans quon me pose des questions de configuration comme quelle racine mot de passe que je souhaite définir par apt
. Je prédéfinirais alors les variables 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
Jai obtenu ceci dans un didacticiel. Ce qui ne mest pas clair: comment le gars a-t-il trouvé les noms des variables? Comment savait-il quil devait définir mysql-server-5.5 mysql-server/root_password password
et mysql-server-5.5 mysql-server/root_password_again
respectivement?
Je sais que je pourrais extraire le package .deb
en émettant dpkg-deb -R package.deb EXTRACTDIR/
– mais je ne vois pas où ces variables sont stockées.
Comment puis-je trouver les variables debconf
pour tout autre paquet?
Réponse
Vous pouvez inspecter ce qui est stocké dans debconf
en utilisant debconf-get-selections
. Ceci est utile si vous avez déjà effectué linstallation.
Alternativement, ces paramètres sont utilisés dans les scripts du responsable du paquet . Avec la commande dpkg-deb
que vous avez exécutée, celles-ci se trouvent dans le sous-répertoire DEBIAN
de EXTRACTDIR
.
À titre dexemple, à partir 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
Les divers db_*
sont des fonctions dassistance pour la gestion de debconf
, obtenues à partir de /usr/share/debconf/confmodule
.
Donc , dans le cas de lightdm
, shared/default-x-display-manager
est une clé debconf
importante.
Réponse
Vous pouvez obtenir les variables dun package installé spécifique en utilisant 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:
Vous pouvez obtenir une liste de tous les paquets installés qui ont des variables dans la base de données en utilisant debconf-show --listowners
, donc si vous « nêtes pas sûr du nom du package, vous pouvez faire quelque chose comme
# 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
Laisser un commentaire