1

我有一个包,我们称之为foo,它有一个依赖关系,而依赖关系又依赖于后缀。我正在尝试通过使用 debconf 回答问题来自动安装foo 。foo的要求是它必须能够安装和配置所有东西,并且必须使用

sudo apt-get install foo

所以这样的事情是不能接受的:

DEBIAN_FRONTEND=noninteractive apt-get install -y foo

另外,请注意foo正在安装在全新安装的 Ubuntu 上。

我尝试的第一件事是(在我的预安装脚本中):

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections

但这没有用。问题仍然出现在安装中。

然后我尝试了这个:

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y postfix

和这个:

echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive apt-get install -y postfix << _EOT
y
EOT

然后我想:

如果将 debconf-utils 放在 Pre-Depends 中会怎样?那没有用。

但是,如果我执行以下操作(从命令行而不是 preinst 脚本),那么安装将毫无问题地进行:

sudo apt-get install debconf-utils
echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
sudo apt-get install foo

但是,这对于我给出的要求是不可接受的。

所以现在我被困住了。如果有人能找出我做错了什么,那将不胜感激,因为我已经搜索了一段时间以寻找答案。

4

1 回答 1

1

看起来很奇怪,你不需要安装debconf-utils来设置dpkg的数据。

如果要阻止对话框窗口,请尝试使用dpkg选项:
--force-confdef(force to keep default option without prompting)
--force-confold (force to keep old conf files)

最后,它会是这样的:
echo "postfix postfix/mailname string your.hostname.com" | debconf-set-selections
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
sudo apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" foo
我希望,它会有所帮助。如果没有,请在此处通知我们。

于 2015-07-07T08:52:14.023 回答