如何在 Debian 包模板中定义动态默认值?

如何在 Debian 包模板中定义动态默认值?

我有一个包,我希望管理员在其中输入接口名称列表。我希望该列表有一个默认值。只是每个系统都有不同的列表(eth0、enp0s3、eno1,仅列出一些)。

这是一个关于这一点的例子:

Template: iplock/public_interfaces
Type: string
Default: eth0
Description: Public Interfaces
 Enter a comma separated list of interface names that are connected to the
 Internet (public). For example: "eth0, eno1, enp0s3" (without the quotes).
 This will be saved in the system settings file. If necessary, you will be
 able to override these values by creating another file with different values
 or use "sudo dpkg-reconfigure iplock" to change the package settings.

可以Default: eth0动态设置吗?现有的 Debian 软件包中有这样的例子吗?

注1:我专门使用Ubuntu。

注2:以上模板可以在github上找到的

答案1

问题的值可以动态设置,但是不使用模板默认值:

不要错误地认为默认字段包含问题的“值”,或者它可以用于更改问题的值。它没有,也不可能,它只是在第一次显示问题时提供默认值。要提供动态更改的默认值,您必须使用 SET 命令来更改问题的值。

有两种方法可以处理这个问题。

  1. 如果您可以在安装包或运行程序时等效地确定合适的值,请将默认值设置为占位符值,并让您的程序在运行时使用该值。IE,不要存储eno1在字段中,eno1在运行时计算,除非用户指定了自己的值。

  2. 如果您想在提示用户之前提供合适的值,请db_set在维护者脚本中使用。看中的“库”部分man debconf-devel举个例子。

相关内容