如何自定义 debconf 问题的选项和描述?

如何自定义 debconf 问题的选项和描述?

我目前正在编写一个包脚本,需要提供定制的选择,并且还希望根据这些选择提供扩展描述。

我之前已经成功修改了一个 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 键中,它会打印点。(-‸ლ)

相关内容