如何让apt-get安装减少噪音?

如果我使用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这似乎与no output except for errors匹配。

如果只是在出现错误而无法安装时,我如何实际将apt-get install打印出来?

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

一个简单的重定向可以做到这一点。 这不完全是你的想法,我敢肯定,但它肯定是有效的:)

简而言之,只需在任何要将所有stdout重定向到虚无的命令的末尾敲击> /dev/null 。 在stderrstderr内容仍将显示在控制台中。

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

没垃圾! 如果我们愚蠢而且打破了某些事情,那么会发生什么:

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

我们遇到了同样的问题。 apt-get install -qq删除了大部分输出,但令人烦恼的“(读取数据库……)仍然存在。

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

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

期待可以帮助他人。