
我目前正在編寫一個包腳本,我需要在其中提供自訂選擇,並且還希望根據這些選擇提供擴充描述。
我之前已經成功修改了 Linux 安裝程序,並使用 Debconf 提出問題,使用預置和自訂腳本,因此我熟悉它的工作原理。
我陷入困境的是更改模板中的描述。根據我在網上查找的所有 Debconf 手冊,儘管資訊很簡短,但選擇和描述都可以自訂。有很多自訂選項的範例,db_subst
並且效果很好。
我陷入困境的是自訂描述文本,在本例中是擴展描述。我嘗試過使用db_subst
但沒有令人滿意的結果。問題是我需要用更多行文字來擴展描述。但我發現 Debconf 只使用一行。如果我在文本中放置像“\n”這樣的換行符,它會按字面意思解釋它們,這看起來很混亂。
Debconf 可以編程來客製化帶有幾行額外文字的描述嗎?或者我是否需要放棄並僅為這一問題手動創建自定義模板文件?我發現我可能已經超出了 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 開發手冊說
請注意: - 就像在 debian 包描述中一樣,單獨一行上的點會引發一個新段落。 - 大多數文字都是自動換行的,但雙縮排文字則是單獨保留,因此您可以將其用於項目列表,例如此列表。
對於替代來說,這顯然是不正確的。例如,如果您直接在模板中放置一個空格點,它將列印一個空行,但將其放入 subst 鍵中,它將列印該點。 (-‸ლ)