首页 文章

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

提问于
浏览
21

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

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

在使用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

Why i cannotuse dpkg : These debians are to be installed from Repo and I dont have local debians on my machine

感谢大家提前帮助!!!!

3 回答

  • 27

    我尝试了其他答案中的建议,发现在尝试安装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) .

  • 10

    我认为你正在寻找的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?可能有用 .

  • 2

    您也可以通过创建 /etc/apt/apt.conf.d/local 并添加以下内容来配置 apt

    Dpkg::Options {
       "--force-confdef";
       "--force-confold";
    }
    

相关问题