如何让 apt-get install 不那么吵?

如何让 apt-get install 不那么吵?

如果我使用apt-get install -qq mono-devel,我希望它除了错误之外会很安静,根据帮助:

-qq No output except for errors

相反,我得到:

Extracting templates from packages: 100%
Selecting previously unselected package binfmt-support.
(Reading database ... 84711 files and directories currently installed.)
Unpacking binfmt-support (from .../binfmt-support_2.0.8_i386.deb) ...
Selecting previously unselected package cli-common.
Unpacking cli-common (from .../cli-common_0.8.2_all.deb) ...
Selecting previously unselected package libgdiplus.
Unpacking libgdiplus (from .../libgdiplus_2.10-3_i386.deb) ...
Selecting previously unselected package libmono-2.0-1.
Unpacking libmono-2.0-1 (from .../libmono-2.0-1_2.10.8.1-1ubuntu2.2_i386.deb) ...
Selecting previously unselected package libmono-2.0-dev.
Unpacking libmono-2.0-dev (from .../libmono-2.0-dev_2.10.8.1-1ubuntu2.2_i386.deb) ...
Selecting previously unselected package libmono-corlib4.0-cil.
Unpacking libmono-corlib4.0-cil (from .../libmono-corlib4.0-cil_2.10.8.1-1ubuntu2.2_all.deb) ...
Selecting previously unselected package libmono-system-xml4.0-cil.
Unpacking libmono-system-xml4.0-cil (from .../libmono-system-xml4.

更多的...

事实上,输出有几百行。这似乎与不匹配no output except for errors

我如何才能apt-get install打印出来仅有的当出现错误而无法安装时?

答案1

apt-get 的手册页如下:

NAME
       apt-get - APT package handling utility -- command-line interface

SYNOPSIS
       apt-get [-asqdyfmubV] [-o=config_string] [-c=config_file] [-t=target_release]
               [-a=architecture] {update | upgrade | dselect-upgrade | dist-upgrade |
               install pkg [{=pkg_version_number | /target_release}]...  | remove pkg...  |
               purge pkg...  | source pkg [{=pkg_version_number | /target_release}]...  |
               build-dep pkg [{=pkg_version_number | /target_release}]...  |
               download pkg [{=pkg_version_number | /target_release}]...  | check | clean |
               autoclean | autoremove | {-v | --version} | {-h | --help}}

-q或标志-qq应该消失命令如下:

apt-get -qq upgrade

答案2

我们面临同样的问题。apt-get install -qq删除了大部分输出,但烦人的“(正在读取数据库......”仍然存在。

我们查看了 apt 的源代码,发现输出是由 apt 派生的 dpkg 生成的。然后 dpkg 的源代码显示,只有当 isatty(1) 为真时才会发出烦人的 soutput。只有当派生使用 pty 而不是管道时才会出现这种情况。回到 apt,有一个未记录的配置变量允许使用管道而不是 pty,然后解决问题:

apt-get install -qq -o=Dpkg::Use-Pty=0 <packages>

希望能够帮助到别人。

答案3

一个简单的重定向就可以做到这一点。我敢肯定,这不是你想象的那样,但它确实有效 :)

简而言之,只需> /dev/null在您想要重定向所有内容的任何命令的末尾敲击即可stdout。输出的内容stderr仍会显示在控制台中。

$ sudo apt-get update > /dev/null
[sudo] password for oli: 
$ 

禁止垃圾!如果我们太愚蠢而损坏了某些东西,将发生以下情况:

$ apt-get cheese > /dev/null
E: Invalid operation cheese
$

答案4

apt-get -qq install -y PACKAGE 2> /dev/null可以:

  1. 仅显示带有 的错误-qq
  2. 将错误发送至/dev/null(不显示),这样您就可以安装零输出的包。

相关内容