web-dev-qa-db-ja.com

DEBパッケージ:debconfを使用したシェルスクリプトに入力ダイアログが表示されない

次のconfig内部のスクリプトcontrol.tar.gz

#!/bin/sh -e

. /usr/share/debconf/confmodule

db_fset mailadmin/database_Host seen false
db_clear
db_purge

db_input medium mailadmin/database_Host || true
db_go

db_get mailadmin/database_Host
echo "$RET" > /tmp/from_config_script.txt

exit 0

テンプレート付き

Template: mailadmin/database_Host
Type: string
Description: The database server's Host name or IP address.

(file templatesdpkg -iを使用してパッケージをインストールするとき、およびコマンドラインからも実行するときに、入力ダイアログが表示されません。

代わりに、このデフォルト値はテンプレートファイルの一部ではなくなりますが、「localhost」を/ tmp/from_config_script.txtに書き込みます。入力ポップアップが表示されたことはありません。入力ポップアップは、私が達成しようとしているものです。

apt-get purge mailadminでパッケージを削除しましたが、パージしてもこのデフォルト値はクリアされませんでした。私に何ができる?

4
user22611

簡単なソリューション:

db_input high ...

これは http://www.fifi.orghttp://www.fifi.org/doc/debconf-doc/tutorial.html のチュートリアルでは言及されていません=)、間接的な方法でのみ。

mediumの優先度は、ダイアログを表示するには低すぎます。しきい値の優先順位は、コンピューターのどこかに設定する必要があります。残念ながら、私はまだどこでわからない。しかし、少なくともダイアログを機能させる方法は知っています。

2
user22611

以前の回答に記載された提案に従った後、私の構成スクリプトはダイアログプロンプトなどを実行しません。次のマンページ記事でこのコメントを見つけました(セクションThe PostInstスクリプトを参照)

https://manpages.debian.org/testing/debconf-doc/debconf-devel.7.en.html

Db_ *コマンドを実行しない場合でも、postinstの最上部で常に/ usr/share/debconf/confmoduleをソースします。これは、構成スクリプトを実行する機会を確保するために必要です(詳細については、HACKSを参照してください)。

(ここでdb_ *コマンドを呼び出していない場合でも)postinstでconfmoduleのソースを取得すると、設定スクリプトが期待どおりに動作し始めました

0
sbeskur