Hvordan finder jeg ud af variabelnavne til valg af debconf-set-valg?
On februar 13, 2021 by admin Lad os sige, at jeg vil installere mysql
fra et script uden at blive stillet nogen konfigurationsspørgsmål som hvilken rod adgangskode, jeg vil indstille med apt
. Jeg vil derefter forudindstille debconf
variablerne:
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 fik dette fra en tutorial. Hvad er uklart for mig: Hvordan fandt fyren ud af variabelnavne? Hvordan vidste han, at han var nødt til at indstille mysql-server-5.5 mysql-server/root_password password
og mysql-server-5.5 mysql-server/root_password_again
henholdsvis?
Jeg ved, at jeg kunne udpakke .deb
-pakken ved at udstede dpkg-deb -R package.deb EXTRACTDIR/
– men jeg kan ikke se, hvor disse variabler er gemt.
Hvordan ville jeg finde ud af debconf
-variablerne for enhver anden pakke?
Svar
Du kan inspicere, hvad der bliver gemt i debconf
ved hjælp af debconf-get-selections
. Dette er nyttigt, hvis du allerede har udført installationen.
Alternativt bruges disse indstillinger i pakkeholderens scripts . Med dpkg-deb
kommandoen, du har kørt, er disse i DEBIAN
underkatalogen til EXTRACTDIR
.
Som et 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 forskellige db_*
-funktioner er hjælpefunktioner til håndtering af debconf
, hentet fra /usr/share/debconf/confmodule
.
Så , i tilfælde af lightdm
, er shared/default-x-display-manager
en vigtig debconf
-tast.
Svar
Du kan få variablerne til en bestemt installeret pakke ved hjælp af debconf-show packagename
f.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 installerede pakker, der har variabler i databasen ved hjælp af debconf-show --listowners
, så hvis du ikke er sikker på, hvad pakkenavnet er, kan du gøre noget lignende
# 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
Skriv et svar