postinst中的db_input不起作用

时间:2012-04-13 10:47:07

标签: debian apt-get deb post-install debconf

我的postinst脚本有问题,我必须要求MySQL的root密码为我的应用程序创建一些用户。我知道,在postinst中使用db_input是不好的做法,但我确实需要它。 为什么这个postinst在我安装我的应用程序表单存储库时不起作用,但是当我将它安装为.deb包时可以正常工作?

的postinst:

#!/bin/bash -e

. /usr/share/debconf/confmodule

db_input high my_app/mysql_root_password || true
db_go

错误:

dpkg: error processing my-app (--configure):
 subprocess installed post-installation script returned error exit status 30
configured to not write apport reports
                                      Errors were encountered while processing:
 my-app
E: Sub-process /usr/bin/dpkg returned an error code (1)

2 个答案:

答案 0 :(得分:2)

差异可能与运行postinst时设置终端的方式有关;可能与你自己运行dpkg时发生的事情有所不同。也许apt-wrapped postinst调用甚至没有分配TTY;我不确定,随便。

但我认为甚至不支持将db_input置于postinst中,因此您可能很难按原样修复它。如果您确实需要从postinst脚本本身提问,您可以通过在debhelper命令运行的环境中将$DEBCONF_DEBUG设置为“developer”来进行调试。

但是,我认为更有用的解决方案是:您应该按照debian/config使用db_input脚本,如建议的那样。什么阻止你?

答案 1 :(得分:0)

如果将其更改为

,可能会解决postinst中的问题
#!/bin/sh -e
. /usr/share/debconf/confmodule
db_version 2.0
db_beginblock
db_input high my_app/mysql_root_password || true
db_endblock
db_go

看看我的旧debian/postinst文件包含db_input。它工作正常,但我更改了它,因为lintian不喜欢postinst中的db_input并告诉我将它移动到debian / config。