debconf の質問の選択肢と説明の両方をカスタマイズするにはどうすればいいですか?

debconf の質問の選択肢と説明の両方をカスタマイズするにはどうすればいいですか?

現在、カスタマイズされた選択肢を提供する必要があり、またそれらの選択肢に基づいて拡張された説明も提供したいパッケージ スクリプトに取り組んでいます。

以前、質問するために Debconf を使用して、preseed とカスタム スクリプトを使用して Linux インストーラーを正常に変更したことがあるため、その動作についてはよく知っています。

私が行き詰まっているのは、テンプレートの説明を変更することです。オンラインで調べたすべての Debconf マニュアルによると、選択肢と説明はどちらもカス​​タマイズできますが、情報は簡潔です。選択肢をカスタマイズする例はたくさんありdb_subst、これはうまく機能します。

行き詰まっているのは、説明テキスト、この場合は拡張説明のカスタマイズです。 を使ってみましたdb_substが、満足のいく結果は得られませんでした。問題は、説明を拡張してテキスト行を増やす必要があることです。しかし、Debconf は 1 行しか使用しないことがわかりました。テキストに "\n" などの改行マーカーを入れると、文字どおりに解釈され、おかしな見た目になります。

Debconf は、数行のテキストを追加して説明をカスタマイズするようにプログラムできますか? それとも、あきらめて、この 1 つの質問のために手動でカスタマイズされたテンプレート ファイルを作成する必要がありますか? Debconf が提供する機能を超えているかもしれませんが、私にとってはそれほど複雑には思えませんでした。

ここに私のサンプル スクリプトとテンプレートを示します。これにより、テスト方法とテスト内容を確認できます。

#!/bin/sh

# testing.sh 
# Debconf testing script.
# Testing dynamic changing of choices and description in question.

export DEBCONF_DEBUG=developer
#export DEBIAN_FRONTEND=gnome

. /usr/share/debconf/confmodule

db_x_loadtemplatefile ./testing.template testing
db_settitle testing/title

list="1, 2, 3, 4"
extended="One\n Two\n Three\n Four\n"

# Use real newlines in text
#extended=`echo "${extended}"`

db_subst testing/list list "${list}"
db_subst testing/list extended "${extended}"
db_reset testing/list
db_input critical testing/list 
db_go
db_get testing/list

db_stop

exit 0


# testing.template

Template: testing/title
Type: title
Description: Testing title

Template: testing/list
Type: select
Choices: ${list}
Description: Please select option below.
 Extended description.
 .
 ${extended}

答え1

次のように、変数に実際の改行を追加するだけです。

extended="One
Two
Three
Four"

これには私の側でいくつかの実験が必要でした。Debiandebconf-develマニュアルにはこう書いてある

次の点に注意してください: - Debian パッケージの説明と同様に、ドットが 1 行にあると新しい段落が始まります。 - ほとんどのテキストは折り返されますが、2 重にインデントされたテキストはそのまま残されるため、このリストのように項目のリストに使用できます。

これは置換の場合は当てはまらないようです。たとえば、テンプレートにスペースドットを直接入力すると空白行が出力されますが、同じものを subst キーに入力するとドットが出力されます。(-‸ლ)

関連情報