如何设置 postinst 脚本和模板以在同一个对话框中提出多个问题并以不同的方式获取它们的返回值$RET
我当前的代码:
模板
Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
We'd like to know if you like the Debian GNU/Linux system
Template: foo/like_debian2
Type: boolean
Description: Do you really like Debian?
We'd like to know if you really like the Debian GNU/Linux system
后安装
# Do you like debian?
db_input medium foo/like_debian || true
db_go
db_get foo/like_debian
echo $RET
# Do you really like debian?
db_input medium foo/like_debian2 || true
db_go
db_get foo/like_debian2
echo $RET
答案1
我想你问的是,我怎样才能提出两个问题并得到两个答案?类似这样的方法应该可以解决问题:
db_input medium foo/like_debian || true
[...]
ANSWER1=$RET
db_input medium foo/like_debian2 || true
[...]
ANSWER2=$RET
echo $ANSWER1,$ANSWER2
这里的关键是您的 post/pre inst & rm 脚本使用 $RET 作为输入,因此您需要将该返回值保存为新变量。如果您想了解更多信息,我建议您阅读这篇文章:https://www.leaseweb.com/labs/2013/06/creating-custom-debian-packages/
更新
我不知道为什么我错过了你之前问的问题,但是为了同时在同一个屏幕上显示多个问题,你可以使用 beginblock 和 endblock:
db_beginblock
db_input medium foo/like_debian || true
db_input medium foo/like_debian2 || true
db_endblock
db_go
这应该可以解决问题。另外,仅供参考,您的 db_get 命令仅在您想要获取上一个值时才是必需的,并且由于您的默认值为 true,并且这是一个 postinst 脚本,因此它们在您的示例中可能不是必需的。还请记住,并非所有接口都支持此 beginblock/endblock,因此根据您测试的方式,您可能会或可能不会看到它。有关更多信息,请参阅: http://www.fifi.org/doc/debconf-doc/tutorial.html#AEN217