如何让apt-get接受来自Repo的无人值守的debian安装中的新配置文件

时间:2011-10-17 19:23:46

标签: ubuntu install apt deb non-interactive

我正在编写一个脚本,用于无人值守安装我们的Repo中的软件包,它是一个软件包,其中一个Debian标记为config。 是否有任何选项可以传递给apt-get / aptitude,以便它接受新的配置文件。

基本上我需要一个相当于dpkg的apt / aptitude --force-confnew

在使用Y

进行apt-get安装时,我需要回答以下问题

配置文件`/opt/application/conf/XXX.conf'

==>由您或脚本创建的系统上的文件。

==>文件也在包维护者提供的包中。

你想做些什么?您的选择是:

Y or I  : install the package maintainer's version

N or O  : keep your currently-installed version

  D     : show the differences between the versions

  Z     : background this process to examine the 

默认操作是保留当前版本。


其他信息:

另外,我在管道中传递sudo密码来执行命令

echo“mysudopass”| sudo -S apt-get mypackage

当安装处于Config Interactive阶段时,这会标记安装错误。

我在Ubuntu 10.04上 apt版本:apt 0.7.25.3

为什么我不能使用dpkg:这些debian将从Repo安装,我的机器上没有本地debian

提前感谢各位帮助!!!!

3 个答案:

答案 0 :(得分:27)

我认为您正在寻找的apt-get命令行是

apt-get -o Dpkg::Options::="--force-confnew" install your-package

至于你的sudo -S问题,也许可以尝试在'|'周围添加一些空格字符。 不是,问题How to pass the password to su/sudo/ssh without overriding the TTY?可能有用。

答案 1 :(得分:10)

我尝试了其他答案中的建议,并发现在尝试安装localepurge软件包时还不够。

使用debconf-set-selections设置我需要的东西后,我不得不使用以下内容:

DEBIAN_FRONTEND=noninteractive apt-get -o Dpkg::Options::="--force-confnew" install localepurge

只有将DEBIAN_FRONTEND环境变量设置为非交互式,才能强制localepurge执行我的要求。其他包装可能也是如此。

当然有了脚本,你可以根据需要导出变量,但要注意它可能会弄乱其他包。例如:

#!/bin/sh
export DEBIAN_FRONTEND=noninteractive
apt-get -o Dpkg::Options::="--force-confnew" install -y localepurge foo bar

-y告诉apt-get停止提问(参见man page)。

答案 2 :(得分:2)

您也可以apt配置为通过创建/etc/apt/apt.conf.d/local并添加:

来执行此操作
Dpkg::Options {
   "--force-confdef";
   "--force-confold";
}