Hvordan finne ut variabelnavnene for debconf-set-selections?
On februar 13, 2021 by admin La oss si at jeg vil installere mysql
fra et skript uten å bli spurt om noen konfigureringsspørsmål som hvilken rot passord jeg vil angi med apt
. Jeg vil da forhåndsinnstille debconf
-variablene:
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
Jeg fikk dette fra en veiledning. Hva er uklart for meg: Hvordan fant fyren ut variabelnavnene? Hvordan visste han at han måtte sette mysql-server-5.5 mysql-server/root_password password
og mysql-server-5.5 mysql-server/root_password_again
henholdsvis?
Jeg vet at jeg kunne trekke ut .deb
-pakken ved å utstede dpkg-deb -R package.deb EXTRACTDIR/
– men jeg ser ikke hvor disse variablene er lagret.
Hvordan ville jeg finne ut av debconf
-variablene for en hvilken som helst annen pakke?
Svar
Du kan inspisere hva som blir lagret i debconf
ved hjelp av debconf-get-selections
. Dette er nyttig hvis du allerede har gjort installasjonen.
Alternativt brukes disse innstillingene i pakken vedlikeholdsskript . Med dpkg-deb
-kommandoen du har kjørt, er disse i DEBIAN
underkatalogen til EXTRACTDIR
.
Som eksempel, fra 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 forskjellige db_*
funksjoner er hjelperfunksjoner for håndtering av debconf
, hentet fra /usr/share/debconf/confmodule
.
Så , i tilfellet med lightdm
, er shared/default-x-display-manager
en viktig debconf
-tast.
Svar
Du kan få variablene for en bestemt installert pakke ved hjelp av debconf-show packagename
eks.
$ 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:
Du kan få en liste over alle de installerte pakkene som har variabler i databasen ved hjelp av debconf-show --listowners
, så hvis du ikke er sikker på hva pakkenavnet er, kan du gjøre noe sånt som
# 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
Legg igjen en kommentar