Hur hittar man variabelnamnen för debconf-set-selections?
On februari 13, 2021 by admin Låt oss säga att jag vill installera mysql
från ett skript utan att få några konfigurationsfrågor som vilken root lösenord som jag vill ställa in med apt
. Jag skulle sedan förinställa debconf
variablerna:
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
Jag fick detta från en handledning. Vad är oklart för mig: Hur fick killen reda på variabelnamnen? Hur visste han att han var tvungen att ställa in mysql-server-5.5 mysql-server/root_password password
respektive mysql-server-5.5 mysql-server/root_password_again
?
Jag vet att jag kunde extrahera paketet .deb
genom att utfärda dpkg-deb -R package.deb EXTRACTDIR/
– men jag kan inte se var dessa variabler lagras.
Hur skulle jag ta reda på debconf
variablerna för något annat paket?
Svar
Du kan inspektera vad som lagras i debconf
med debconf-get-selections
. Detta är användbart om du redan har gjort installationen.
Alternativt används dessa inställningar i pakethållarens skript . Med dpkg-deb
-kommandot du har kört finns dessa i DEBIAN
underkatalogen för EXTRACTDIR
.
Som exempel, från 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 olika db_*
-funktioner är hjälpfunktioner för hantering av debconf
, erhållna från /usr/share/debconf/confmodule
.
Så , när det gäller lightdm
, är shared/default-x-display-manager
en viktig debconf
-tangent.
Svar
Du kan hämta variablerna för ett specifikt installerat paket med 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:
Du kan få en lista över alla installerade paket som har variabler i databasen med debconf-show --listowners
, så om du inte är säker på vad paketnamnet är kan du göra något liknande
# 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
Lämna ett svar