DEB 包:带有 debconf 的 Shell 脚本不显示输入对话框

DEB 包:带有 debconf 的 Shell 脚本不显示输入对话框

下列配置里面的脚本控制文件

#!/bin/sh -e

. /usr/share/debconf/confmodule

db_fset mailadmin/database_host seen false
db_clear
db_purge

db_input medium mailadmin/database_host || true
db_go

db_get mailadmin/database_host
echo "$RET" > /tmp/from_config_script.txt

exit 0

使用模板

Template: mailadmin/database_host
Type: string
Description: The database server's host name or IP address.

(文件模板)在我使用以下方式安装包时不显示输入对话框dpkg-i 命令,当我从命令行运行它时也是如此。

相反,它会将“localhost”写入/tmp/from_config_script.txt,即使此默认值不再是模板文件的一部分。我从来没有看到过输入弹出窗口。输入弹出窗口正是我想要实现的。

我删除了包apt-get 清除邮件管理员,但即使清除也没有清除此默认值。我该怎么办?

答案1

简单的解决方案:

db_input high ...

教程中没有提到这一点http://www.fifi.orghttp://www.fifi.org/doc/debconf-doc/tutorial.html) 只能以间接的方式体现。

优先事项中等的太低,无法显示对话框。阈值优先级必须在计算机上的某个地方设置。不幸的是,我仍然不知道在哪里。但至少我知道如何使对话框工作。

答案2

按照前面答案中列出的建议操作后,我的配置脚本仍然无法运行,没有对话框提示等。我终于在以下手册页文章中偶然发现了这条评论(请参阅 PostInst 脚本部分)

https://manpages.debian.org/testing/debconf-doc/debconf-devel.7.en.html

始终在 postinst 顶部 source /usr/share/debconf/confmodule,即使您不会在其中运行任何 db_* 命令。这是确保配置脚本有机会运行所必需的(有关详细信息,请参阅 HACKS)。

一旦我在 postinst 中获取了 confmodule(尽管我在这里没有调用 db_* 命令),我的配置脚本就开始按预期工作了

相关内容