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 password
とmysql-server-5.5 mysql-server/root_password_again
をそれぞれ設定する必要があることをどのようにして知ったのですか?
.deb
を発行してdpkg-deb -R package.deb EXTRACTDIR/
パッケージを抽出できることはわかっていますが、これらの変数が格納されている場所がわかりません。
他のパッケージのdebconf
変数を見つけるにはどうすればよいですか?
debconf-get-selections
を使用して、debconf
に何が格納されているかを検査できます。これは、実際にインストールをすでに行っている場合に役立ちます。
あるいは、これらの設定は パッケージのメンテナースクリプト で使用されます。実行したdpkg-deb
コマンドでは、これらはDEBIAN
のEXTRACTDIR
サブディレクトリにあります。
例として、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
キーです。
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