web-dev-qa-db-ja.com

同じダイアログで複数の質問

同じダイアログに複数の質問があり、それらの戻り値を異なる$RETで取得するようにpostinstスクリプトとテンプレートを設定するにはどうすればよいですか?

私の現在のコード:

テンプレート

Template: foo/like_debian
Type: boolean                            
Description: Do you like Debian?
 We'd like to know if you like the Debian GNU/Linux system

Template: foo/like_debian2
Type: boolean                            
Description: Do you really like Debian?
 We'd like to know if you really like the Debian GNU/Linux system

postinst

# Do you like debian?
db_input medium foo/like_debian || true
db_go
db_get foo/like_debian
echo $RET

# Do you really like debian?
db_input medium foo/like_debian2 || true
db_go
db_get foo/like_debian2
echo $RET
1
Milind Dumbare

あなたが尋ねたのは、どうすれば2つの質問をして、2つの答えを得ることができるかということだと思います。このような何かがトリックを行う必要があります:

db_input medium foo/like_debian || true
[...]
ANSWER1=$RET
db_input medium foo/like_debian2 || true
[...]
ANSWER2=$RET
echo $ANSWER1,$ANSWER2

ここで重要なのは、post/pre inst&rmスクリプトが入力として$ RETを使用しているため、その戻り値を新しい変数として保存する必要があるということです。これについてもっと知りたい場合は、この記事を読むことをお勧めします: https://www.leaseweb.com/labs/2013/06/creating-custom-debian-packages/

更新

以前に質問していたことを見逃した理由はわかりませんが、beginblockとendblockを使用して、同じ画面で複数の質問を同時に取得するには、次のようにします。

db_beginblock
db_input medium foo/like_debian || true
db_input medium foo/like_debian2 || true
db_endblock
db_go

これでうまくいくはずです。また、参考までに、db_getコマンドは、前の値を取得する場合にのみ必要です。デフォルトはtrueであり、これはpostinstスクリプトであるため、この例ではおそらく必要ありません。また、すべてのインターフェイスがこのbeginblock/endblockをサポートしているわけではないため、これをテストする方法によっては、表示される場合と表示されない場合があります。詳細については、以下を参照してください: http://www.fifi.org/doc/debconf-doc/tutorial.html#AEN217

1
snorp