0

我正在尝试使用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

我的预安装文件是:

#!/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

我无法找出问题所在。

谢谢。

4

1 回答 1

1

我认为这里可能存在两个问题。首先,您不能在运行 debconf 的脚本中将输出输出到标准输出。在 中运行/usr/share/debconf/confmodulepreinstpreinst脚本会从头重新启动,并且 echo 语句会再次运行。要解决此运行echo 2>&1 in preinst。在当前脚本中,回显行将中断与 debconf 的通信通道。

访问模板也可能存在一些问题。它看起来像 debconf 的前端(请参阅/usr/share/debconf/frontend很难访问 preinst 脚本中的模板,但它可能存在一些问题。一旦你修复 preinst 脚本不将输出发送到标准输出,这肯定会破坏事情和可能是整个问题,导出DEBCONF_DEBUG=developer并重新运行脚本。这将跟踪所有 debconf 操作。

于 2021-02-18T22:20:12.890 回答