如何在没有“您想继续 [Y/n] 吗?”的情况下使用 apt 安装软件包 迅速的?

Luk*_*kus 89 apt software-installation

当然,当你输入:

sudo apt-get install whatever
Run Code Online (Sandbox Code Playgroud)

它问你:

Do you want to continue [Y/n]? 
Run Code Online (Sandbox Code Playgroud)

有什么方法可以安装它而不询问我是否要继续?我真的不在乎空间,我有更多就足够了。

Rin*_*ind 133

sudo apt-get install -y whatever
Run Code Online (Sandbox Code Playgroud)

从手册页 ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.
Run Code Online (Sandbox Code Playgroud)

  • (如何危险地生活档案) (10认同)
  • sudo apt-get install -yeah 不管... (6认同)
  • 这就是为什么他们在那里@KingShimkus ;) (2认同)

bel*_*qua 19

对于 apt-get-y或运行--assume-yes良好(如 @rinzwind 所解释的),我认为这是这里的最佳答案。对于许多这样的交互式管理操作,有一个类似的命令。

另一种非常通用的方法是:

 $ echo "y" | sudo apt-get install edamame_biscuit
Run Code Online (Sandbox Code Playgroud)

(其中 edamame-biscuit 是您要安装的(编造)软件包,并且假定“y”是合法响应;根据需要替换为“yes”或其他文本。)

这种方法的一个“特点”是,如果您错误地假设只有一个交互式提示,这将中断。如果有更多可能不需要的提示,您可能不想说“是”,则可以避免系统在不询问的情况下继续运行的情况。

  • 另外,`是的| sudo apt-get install edamame-biscuit`。Yes 是一个向其输出发送“是”字样的命令。您还可以根据需要使其输出任何其他文本,请参阅联机帮助页。 (15认同)
  • @Kroltan `yes` 命令(默认情况下)只输出字母 `y` 后跟一个换行符,次数是填充管道缓冲区所需的次数。要真正打印“yes”这个词,你必须使用命令“yes yes”。 (15认同)
  • @Braiam 我认为这就是重点,所以如果有人只是将它粘贴到他/她的外壳中,它不会做任何事情。 (4认同)
  • `是`,请原谅我的错误 (3认同)
  • 我特别喜欢“这种方法的一个‘特性’是,如果你错误地假设只有一个交互式提示,这将中断。” 因为垃圾邮件对一切都是肯定的可能会更加危险。 (2认同)

Bra*_*iam 5

首先,让我们了解为什么会出现该消息。事实上,如果软件包没有您尚未安装的依赖项或您明确告诉它安装的依赖项,apt 永远不会询问您:

?  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...
Run Code Online (Sandbox Code Playgroud)

如果你想安装一个依赖于你没有提到的包的包,它会问:

?  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Run Code Online (Sandbox Code Playgroud)

即便如此,也不会询问您是否还暗示要安装这些软件包:

?  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])
Run Code Online (Sandbox Code Playgroud)

但是,那么,如何使它不会明确地询问您呢?通过 Rizwind 答案应该涵盖临时和脚本解决方案(实际上,该选项在脚本中使用较多),您可以改为修改apt.conf文件并添加:

APT::Get::Assume-Yes
Run Code Online (Sandbox Code Playgroud)

这样的事情应该足够了:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask
Run Code Online (Sandbox Code Playgroud)

请注意,这将不允许您应该验证其他更恶劣的提示,例如:

?  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 
Run Code Online (Sandbox Code Playgroud)

这就是为什么我不推荐使用yes | ...,因为这个警告会被忽略。