Jak znaleźć nazwy zmiennych dla debconf-set-selections?
On 13 lutego, 2021 by admin Powiedzmy, że chcę zainstalować mysql
ze skryptu bez zadawania pytań konfiguracyjnych, takich jak jaki root hasło, które chcę ustawić za pomocą apt
. Następnie ustawiłbym wstępnie zmienne 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
Mam to z samouczka. Co jest dla mnie niejasne: jak facet znalazł nazwy zmiennych? Skąd wiedział, że musi ustawić mysql-server-5.5 mysql-server/root_password password
i mysql-server-5.5 mysql-server/root_password_again
?
Wiem, że mogę wyodrębnić pakiet .deb
, wydając dpkg-deb -R package.deb EXTRACTDIR/
– ale nie widzę, gdzie te zmienne są przechowywane.
Jak mogę znaleźć zmienne debconf
dla innych pakietów?
Odpowiedź
Możesz sprawdzić, co jest przechowywane w debconf
, używając debconf-get-selections
. Jest to przydatne, jeśli instalacja została już wykonana.
Alternatywnie, te ustawienia są używane w skryptach opiekuna pakietu . Po wykonaniu polecenia dpkg-deb
znajdują się one w podkatalogu DEBIAN
EXTRACTDIR
.
Na przykład z 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
Różne db_*
to funkcje pomocnicze do obsługi debconf
, uzyskane z /usr/share/debconf/confmodule
.
A więc , w przypadku lightdm
, shared/default-x-display-manager
jest ważnym kluczem debconf
.
Odpowiedź
Zmienne dla określonego zainstalowanego pakietu można pobrać za pomocą debconf-show packagename
np.
$ 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:
Możesz uzyskać listę wszystkich zainstalowanych pakietów, które mają zmienne w bazie danych, używając debconf-show --listowners
, więc jeśli nie masz pewności, jaka jest nazwa pakietu, możesz zrobić coś takiego jak
# 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
Dodaj komentarz