使用 apt-get install 时自动回答“是”

Mis*_*iry 476 linux

有没有办法让apt-get install“你想继续 [y/N] 吗?”回答“是”?

小智 598

通过apt-get 手册页

apt-get -y install [packagename]
Run Code Online (Sandbox Code Playgroud)

  • `-y` 是缩写,`--yes` 是 `--assume-yes` 的同义词,而 `--force-yes` 是一个不同的选项。它用于决定具有潜在更严重影响的提示,例如降级或破坏依赖项。请参阅手册页(答案中链接),那里有详细解释。 (8认同)

小智 193

问题在于:

apt-get --yes install $something
Run Code Online (Sandbox Code Playgroud)

是如果包签名所有者的公钥不在密钥环中或其他一些条件,它将要求手动确认。确保它不会要求确认,只需执行以下操作:

apt-get --yes --force-yes install $something
Run Code Online (Sandbox Code Playgroud)

如果您想永久保留这些设置,请在 /etc/apt/apt.conf.d/ 中创建一个文件,例如 /etc/apt/apt.conf.d/90forceyes,其内容如下:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
Run Code Online (Sandbox Code Playgroud)

  • 请永远不要使用`--force-yes`:作为[对`debian-devel`相关线程的回复](https://lists.debian.org/debian-devel/2015/06/msg00145。 html) 建议,`--force-yes` 可能会使系统无法使用。(我没有反对,因为答案实际上解决了 OP 所述的问题,但无论如何我都会在答案中添加一个大红色警告。) (17认同)
  • __APT::Get::Assume-Yes "true";__ 帮助我避免在 docker 容器中的安装中断。 (7认同)
  • +1 为多样性。所有的“-y”都变得无聊了。(另外,这是一个更完整的答案。) (5认同)
  • force-yes 已被弃用。https://tracker.mender.io/browse/CFE-2360 (5认同)

Fra*_*urt 63

请注意,如果您还想在出现交互式提示时自动按照默认答案进行操作,则可以使用 DEBIAN_FRONTEND=noninteractive

单机安装:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]
Run Code Online (Sandbox Code Playgroud)

例如:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix
Run Code Online (Sandbox Code Playgroud)

所有更新:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 
Run Code Online (Sandbox Code Playgroud)

您可以使用和 设置更精细的选项-o Dpkg::Options::="--force-confdef"-o Dpkg::Options::="--force-confold"

例子:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"
Run Code Online (Sandbox Code Playgroud)

或者

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
Run Code Online (Sandbox Code Playgroud)

交互式提示示例:

在此处输入图片说明

有趣的阅​​读: 执行 Debian 软件包的无人值守安装


小智 15

APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";
Run Code Online (Sandbox Code Playgroud)

这至少应该被加入/etc/apt/apt.conf并注释掉。我担心 Ubuntu 正在采取 Microsoft 的策略,即总是请求许可。

“你确定吗?”,当然我敢肯定,我不是一个训练有素的猴子,只是在键盘上打字,开心地点击。

旁边的门会问:“你确定要出去吗?”
烤箱会问:“你确定要做饭吗?”
汽车会问:“你确定要刹车吗?”
灭火器会问:“你确定要灭火吗?”
对不起,戴夫,我不能让你那样做。
HAL9000 可以使用收缩,但 Data 不能,或者不能。

  • 与 HAL9000 和 dpkg 请求许可的不同之处在于 HAL 说“不,句号”,而“是的,照我说的做”事情仅在您即将完全彻底破坏您的系统时才会出现。如果这就是你想要的,当然,继续。但在这种情况下发出警告似乎是合理的。 (3认同)

Pow*_*ord 9

apt-get HOWTO

使用-y开关: apt-get -y install packagename


ste*_*ert 7

apt-get -y update
apt-get -y install [package]
Run Code Online (Sandbox Code Playgroud)

  • +1 ,但为什么 `update` 需要许可? (2认同)
  • @Chiwda 我住在第三世界国家,那里的东西仍然是有价值的商品 :) (2认同)

Sum*_*Sky 5

一般来说,手册中的选项应该可以很好地工作

apt-get -y --force-yes install package
Run Code Online (Sandbox Code Playgroud)

如果不成功您可以尝试使用该yes命令。

yes | apt-get -y --force-yes install package
Run Code Online (Sandbox Code Playgroud)

确实将其与我的 vagrant shell 配置脚本一起使用

PS:如果您想要非交互式但通常声明“否”,那么您可以尝试以下操作:

yes no | apt-get install package
Run Code Online (Sandbox Code Playgroud)