Hoe vind ik de variabelenamen voor debconf-set-selections?
Geplaatst op februari 13, 2021 door admin Laten we zeggen dat ik mysql
wil installeren vanuit een script zonder dat er configuratievragen gesteld worden, zoals welke root wachtwoord dat ik wil instellen door apt
. Ik zou dan de debconf
variabelen instellen:
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
Ik heb dit uit een tutorial gehaald. Wat is mij niet duidelijk: hoe kwam de man achter de variabelenamen? Hoe wist hij dat hij mysql-server-5.5 mysql-server/root_password password
en mysql-server-5.5 mysql-server/root_password_again
respectievelijk?
Ik weet dat ik het .deb
-pakket kan extraheren door – maar ik zie niet waar die variabelen zijn opgeslagen.
Hoe kom ik achter de debconf
variabelen voor een ander pakket?
Answer
Je kunt zien wat er wordt opgeslagen in debconf
met debconf-get-selections
. Dit is handig als u de installatie al heeft gedaan.
Als alternatief worden deze instellingen gebruikt in de scripts van de pakketbeheerder . Met het dpkg-deb
commando dat je hebt uitgevoerd, staan deze in de DEBIAN
submap van EXTRACTDIR
.
Als voorbeeld, van 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
De verschillende db_*
functies zijn hulpfuncties voor het afhandelen van debconf
, verkregen van /usr/share/debconf/confmodule
.
Dus , in het geval van lightdm
, shared/default-x-display-manager
is een belangrijke debconf
sleutel.
Answer
Je kunt de variabelen voor een specifiek geïnstalleerd pakket krijgen met 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:
U kunt een lijst krijgen van alle geïnstalleerde pakketten die variabelen in de database hebben met debconf-show --listowners
, dus als je “niet zeker weet wat de pakketnaam is, kun je zoiets doen als
# 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
Geef een reactie