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


356

有没有办法对apt-get install“您要继续[y / N]吗?”回答“是”?

Answers:



175

问题在于:

apt-get --yes install $something

是如果包裹签名所有者的公钥不在钥匙圈中或其他某些情况,它将要求进行手动确认。确保它不要求确认,只需执行以下操作:

apt-get --yes --force-yes install $something

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

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

3
+1为多样化。所有的-y都变得无聊了。(另外还有一个更完整的答案。)
丹尼斯·威廉姆森

1
当它说“要继续输入短语'是的,照我说的做!'”时,这项工作也可以吗?如果没有解决方法,那该怎么办?尝试在chroot的debian映像中用systemd替换sysvinit时遇到此问题。
Lennart Rolland 2015年

13
请永远不要使用--force-yes:作为此回复到相关的线程上debian-devel暗示,--force-yes可能会导致系统崩溃。(我不会拒绝投票,因为答案实际上解决了OP所述的问题,但无论如何我都会在答案中添加大红色警告。)
kostix15年

7
APT :: Get :: Assume-Yes“ true”; 帮助我避免了在Docker容器中安装的中断。
Mehdi Sadeghi


53

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

单次安装:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

例如:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

所有更新:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

您可以使用和 设置更好的选项-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"

要么

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

交互式提示示例:

在此处输入图片说明

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


1
好答案。即使使用-y,我仍然会提示您是否要重新启动服务。我需要这样做以完全消除所有提示。
wisbucky

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

APT::Get::force-yes "true";

至少应该加入/etc/apt/apt.conf并注释掉。我担心Ubuntu会一直采用Microsoft的方法,即总是要求获得许可。

“您确定吗?”,当然,我可以肯定,我不是训练有素的猴子,只是简单地敲击键盘,然后点击开心。

下一扇门问:“您确定要出去吗?”
烤箱会问:“您确定要煮吗?”
汽车会问:“您确定要刹车吗?”
灭火器会问:“您确定要灭火吗?”
抱歉,戴夫,我不能让你那样做。
HAL9000可以使用收缩,但是数据不能或不能。


3
与HAL9000和dpkg寻求许可的区别在于,HAL表示“否,句点”,而“是的,按我说的做”仅在您要完全彻底破坏系统时才会显示。如果那是您想要的,那么请继续。但是在这种情况下发出警告似乎是合理的。
Wouter Verhelst,2015年



3

通常,手册中的选项应该可以正常工作

apt-get -y --force-yes install package

如果未成功,则可以尝试使用该yes命令。

yes | apt-get -y --force-yes install package

确实将此与我无所事事的shell配置脚本一起使用

PS:如果您要进行非交互操作,但总体上说不,那么您可以尝试以下操作:

yes no | apt-get install package

1

新的(wellapt别名也采用-y--yes)开关:

sudo apt -y upgrade

1

如果您始终需要-y参数,建议添加该行

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

到您的.bashrc中。就像注释所解释的那样,这将自动将-y参数添加到所有apt-get命令中,从而批准所有下载。


注意:在您还原.bashrc并重新启动Shell之前,这将一直保持不变。


1

我一直在寻找一种在脚本中选择非默认值的方法,特别是在安装wireshark时,最终使用tmux与shell交互,如下所示:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.