我正在尝试使用dpkg-deb --build
命令构建一个包。
当我尝试使用db_input时,它失败了:
dpkg-deb --build audionet-0.0.8b/
dpkg-deb: building package `audionet' in `audionet-0.0.8b.deb'.
lintian audionet-0.0.8b.deb
W: audionet: binary-without-manpage usr/bin/audionet
sudo dpkg -i audionet-0.0.8b.deb
(Reading database ... 294473 files and directories currently installed.)
Preparing to unpack audionet-0.0.8b.deb ...
you start preinst file
dpkg: error processing archive audionet-0.0.8b.deb (--install):
subprocess new pre-installation script returned error exit status 128
you are in postrm file
you start postinst file
you leave postinst file
Errors were encountered while processing:
audionet-0.0.8b.deb
我的preinst文件是:
#!/bin/sh
# Exit on error
set -e
# echo something
echo "you start preinst file"
# Source debconf library.
. /usr/share/debconf/confmodule
# Ask questions
db_input medium audionet/question1 || true
#~ db_input medium audionet/question2 || true
# Show interface
db_go || true
echo "you leave preinst file"
模板文件:
Template: audionet/question1
Type: select
Choices: YES, no, dont know
Description: presence proxy :
Do you use a proxy.
Template: audionet/question2
Type: string
Description: proxy def :
Proxy serverport.
我还注意到安装没有进入配置文件,因为没有显示echo:
#!/bin/sh
# Exit on error
set -e
# echo something
echo "you are in config file"
# Source debconf library.
. /usr/share/debconf/confmodule
#~ # Ask questions
#~ db_input medium audionet/question1 || true
#~ db_input medium audionet/question2 || true
# Show interface
db_go || true
我无法找出问题所在。
感谢。
答案 0 :(得分:0)
我认为这里可能存在两个问题。首先,您不能在运行 debconf 的脚本中输出到标准输出。在 /usr/share/debconf/confmodule
中运行 preinst
后,preinst
脚本会从头开始重新启动,并再次运行 echo 语句。要解决此问题,请运行 echo 2>&1 in preinst
。在当前脚本中,echo 行将中断与 debconf 的通信通道。
也有可能在访问模板时出现问题。它看起来像 debconf 的前端(请参阅 /usr/share/debconf/frontend
很难在 preinst 脚本中访问模板,但可能存在一些问题。一旦您修复了 preinst 脚本,不要将输出发送到 stdout,肯定会破坏事情并且可能是整个问题,导出 DEBCONF_DEBUG=developer
并重新运行脚本。这将跟踪所有 debconf 操作。