如果我使用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
可以:
- 仅显示带有 的错误
-qq
。 - 将错误发送至
/dev/null
(不显示),这样您就可以安装零输出的包。