Answers:
问题在于:
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";
-y
都变得无聊了。(另外还有一个更完整的答案。)
--force-yes
:作为此回复到相关的线程上debian-devel
暗示,--force-yes
可能会导致系统崩溃。(我不会拒绝投票,因为答案实际上解决了OP所述的问题,但无论如何我都会在答案中添加大红色警告。)
请注意,如果您还想在出现交互式提示时自动使用默认答案,则可以使用 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软件包的无人值守安装
-y
,我仍然会提示您是否要重新启动服务。我需要这样做以完全消除所有提示。
APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
至少应该加入/etc/apt/apt.conf
并注释掉。我担心Ubuntu会一直采用Microsoft的方法,即总是要求获得许可。
“您确定吗?”,当然,我可以肯定,我不是训练有素的猴子,只是简单地敲击键盘,然后点击开心。
下一扇门问:“您确定要出去吗?”
烤箱会问:“您确定要煮吗?”
汽车会问:“您确定要刹车吗?”
灭火器会问:“您确定要灭火吗?”
抱歉,戴夫,我不能让你那样做。
HAL9000可以使用收缩,但是数据不能或不能。
使用-y
开关:
apt-get -y install packagename
apt-get -y update
apt-get -y install [package]
update
需要许可?
apt-get update
命令需要root权限,因为它会更新本地软件包列表(索引),它们是root拥有的系统文件。
我一直在寻找一种在脚本中选择非默认值的方法,特别是在安装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