web-dev-qa-db-ja.com

debconf-set-selectionsの変数名を見つける方法は?

mysqlで設定したいrootパスワードなどの設定に関する質問をせずに、スクリプトからaptをインストールしたいとします。次に、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

これはチュートリアルから入手しました。私には何が不明確ですか:どうやってその人は変数名を見つけましたか? mysql-server-5.5 mysql-server/root_password passwordmysql-server-5.5 mysql-server/root_password_againをそれぞれ設定する必要があることをどのようにして知ったのですか?

.debを発行してdpkg-deb -R package.deb EXTRACTDIR/パッケージを抽出できることはわかっていますが、これらの変数が格納されている場所がわかりません。

他のパッケージのdebconf変数を見つけるにはどうすればよいですか?

4
manifestor

debconf-get-selectionsを使用して、debconfに何が格納されているかを検査できます。これは、実際にインストールをすでに行っている場合に役立ちます。

あるいは、これらの設定は パッケージのメンテナースクリプト で使用されます。実行したdpkg-debコマンドでは、これらはDEBIANEXTRACTDIRサブディレクトリにあります。

例として、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

さまざまなdb_*関数は、/usr/share/debconf/confmoduleから取得したdebconfを処理するためのヘルパー関数です。

したがって、lightdmの場合、shared/default-x-display-managerは重要なdebconfキーです。

0
muru

debconf-show packagenameを使用して、特定のインストール済みパッケージの変数を取得できます

例:.

$ 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:

debconf-show --listownersを使用すると、データベースに変数が含まれているすべてのインストール済みパッケージのリストを取得できます。そのため、パッケージ名がわからない場合は、次のようにすることができます

# 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
10
steeldriver