我在 Azure Cloud 中创建了一个 Ubuntu 12.04.5 LTS。我通过 Jenkins powershell 构建创建它:1. 在 Azure 中创建虚拟机 2. 执行一些远程 SSH 命令(其中包括 apt-get dist-upgrade)3. 从虚拟机创建虚拟映像
但是构建在第 2 步挂起了。在第 2 步中,除其他命令外,我执行:
apt-get update
apt-get -q -y dist-upgrade
-y 的目的是避免交互问题。如果我从 shell 手动运行apt-get -q -y dist-upgrade它工作正常,直到两次卡住:
参数 -y 应该可以避免这种情况。如你所见,有问题的包是瓦根特,即 Microsoft Azure Linux 代理,当我完成第 1 步时,它会默认安装
我的问题是:我该如何避免这些互动问题?(要么回答是,要么回答否,要么避免升级该软件包或其他东西)
答案1
也许您还可以尝试:
DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes
答案2
似乎与配置文件冲突在 apt-get(dkpg)中很常见,我通过使用以下方法解决了该问题:
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
这些选项的含义是:
- --force-confdef:当可以时要求 dpkg 单独决定,否则提示...
- --force-confold:不要修改当前配置文件...