【问题标题】:apt-get update non interactiveapt-get 更新非交互式
【发布时间】:2016-01-27 00:02:03
【问题描述】:

我正在尝试使更新完全非交互式。(在 ubuntu 14.04.3 LTS 上) 我认为使用这种类型的命令会很容易:

export DEBIAN_FRONTEND=noninteractive
apt-get update && apt-get upgrade -q -y --force-yes && apt-get dist-upgrade -q -y --force-yes

但不...我总是有这样的问题:

Configuration file '/etc/cloud/cloud.cfg'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    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     : start a shell to examine the situation
 The default action is to keep your current version.
*** cloud.cfg (Y/I/N/O/D/Z) [default=N] ?

那么你知道我如何自动接受默认值吗?

【问题讨论】:

  • 这个网站是为编程问题。我们不是一般的操作系统/软件技术支持。
  • 我认为问如何使 apt 非交互是一个有效的问题
  • 我们最后应该弄清楚是否还需要superuser.com。

标签: ubuntu apt-get


【解决方案1】:

您需要将一些dpkg 选项传递给您的命令,例如:

export DEBIAN_FRONTEND=noninteractive
apt-get update && 
    apt-get -o Dpkg::Options::="--force-confold" upgrade -q -y --force-yes &&
    apt-get -o Dpkg::Options::="--force-confold" dist-upgrade -q -y --force-yes

顺便说一句,我建议只使用 dist-upgrade,如果你使用upgrade,你最终会遇到损坏的依赖关系。

【讨论】:

  • 对于发现此内容的任何其他旅行者,Dpkg::Options 周围的引用是错误的。应该是:apt-get -o "Dpkg::Options::=--force-confold" dist-upgrade -y --force-yes
  • 为了在 sudo 中使用,请确保将环境变量放在命令前面,而不是希望 sudo 不会剥离您的环境,例如:sudo DEBIAN_FRONTEND=noninteractive apt-get -o "Dpkg::Options::=--force-confold" dist-upgrade -y --force-yes
  • @Irving,这句话对我有用,也许最近发生了一些变化?
  • W: --force-yes is deprecated, use one of the options starting with --allow instead.(apt v1.1 和更新版本)。看起来新的等价物是--allow-downgrades --allow-remove-essential --allow-change-held-packages
【解决方案2】:

>= Apt 1.1

如果您使用的是 Apt 1.1 或更高版本,--force-yes has been deprecated,那么您必须改用以--allow 开头的选项,例如--allow-downgrades, --allow-remove-essential, --allow-change-held-packages.

所以命令是:

DEBIAN_FRONTEND=noninteractive \
  apt-get \
  -o Dpkg::Options::=--force-confold \
  -o Dpkg::Options::=--force-confdef \
  -y --allow-downgrades --allow-remove-essential --allow-change-held-packages

注意:使用--force-confold 保留旧配置,使用--force-confnew 保留新配置。

来源:CFE-2360: Make apt_get package module version aware

相关:

【讨论】:

  • 我认为您的命令中某处缺少“更新”一词?
猜你喜欢
  • 2017-11-04
  • 1970-01-01
  • 2016-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2014-07-02
相关资源
最近更新 更多