我目前正在编写一个包脚本,需要提供定制的选择,并且还希望根据这些选择提供扩展描述。
我之前已经成功修改了一个 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 键中,它会打印点。(-‸ლ)