apt-get install -qq mono-devel
,则根据帮助,我希望它会保持安静,除了错误:-qq No output except for errors
相反,我得到:
以及更多...
实际上,有几百行输出。这似乎与
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
评论
这是正确的答案!任何实际的实现都需要保留提示。正确使用-q绝对有效(无“动画”输出),以及-qq(无错误则无输出)。请投票!
– Charney Kaye
15年8月19日在19:18
不,它不起作用。即使在安装命令之前使用-qq,从读取数据库到解压缩和设置消息,我仍然会遇到很多麻烦。
–CrazyCasta
16年6月20日在23:55
好吧,我试过了sudo apt-get -qq -y install mercurial,sudo apt-get install -qq -y mercurial,sudo apt-get qq install -qq -y mercurial和其他涉及甚至更多q的变化(尽管我我没有在Google Cloud btw(8)上运行Debian Jessie。我也尝试过Goetz的答案,但它似乎也不起作用。我的意思是我没注意到有什么不同。
–CrazyCasta
16年6月22日在15:49
这是Ubuntu 16.04.1,作为Docker容器运行。我的猜测是消息实际上来自dpkg,由apt-get调用。命令为apt-get -qq更新&& apt-get -qq升级&& apt-get -qq install build-essential。见gist.github.com/stefanlasiewski/…
– Stefan Lasiewski
16 Dec 8'在19:13
在Docker中,您有2种选择:(1)分别运行每个命令,而不用&&连接它们(可能会起作用,但这不是“ docker方式”)(2)像其他答案一样将输出重定向到/ dev / null。如果存在此错误,选项2可能是最好的选择。
–迈克
16 Dec 9'在8:44
#2 楼
我们面临着同样的问题。apt-get install -qq
删除了大多数输出,但令人讨厌的“(正在读取数据库...”仍然存在。我们查看了apt的来源,发现输出是apt派生的dpkg产生的然后,dpkg的源显示,只有当isatty(1)为true时,才会发出烦人的soutput。仅当fork使用pty代替pipe时才出现这种情况。回到apt,有一个未记录的配置变量,允许使用pipe而是可以解决问题的pty:
apt-get install -qq -o=Dpkg::Use-Pty=0 <packages>
可以帮助别人的期望。
评论
实际上,这是完全正确的答案。它还允许使用-q运行apt-get并看到一些输出,而不会看到烦人的“读取数据库”
–valodzka
2015年9月30日在20:26
我正在gcloud debian jessie(8)上尝试此操作,但仍然可以读取数据库行并解包/设置行。
–CrazyCasta
16年6月21日,0:09
此答案不适用于Ubuntu 18.04。
– Amedee Van Gasse
18年5月10日在16:06
还有很多选择/准备/设置线...
– Hayd
19年1月5日在23:03
-o = Dpkg :: Use-Pty = 0在Ubuntu 18.04上完美运行。它仅显示一个“读取数据库”,而不是多个,每5%更新一次进度。
– Wisbucky
19年7月18日在22:24
#3 楼
一个简单的重定向可以做到这一点。我敢肯定,这与您的想法并不完全相同,但是可以确保它在地狱中正常工作。变成虚无。在> /dev/null
上输出的内容仍将显示在控制台中。$ sudo apt-get update > /dev/null
[sudo] password for oli:
$
没有垃圾!如果我们愚蠢地打破了某些东西,就会发生以下情况:
$ apt-get cheese > /dev/null
E: Invalid operation cheese
$
评论
如果您得到提示,那会有点问题...
–l0b0
13年2月19日在16:44
如果这是脚本的一部分,则不会在apt-get前面放一个sudo。相反,您只需要在运行脚本时使用sudo即可。
– Xion
13年2月19日在16:49
@Oli如果您绝对确定不会使系统着火,则可以始终使用sudo apt-get upgrade -qq --force-yes> / dev / null。正如WulfHart所说,-qq表示-y,而--force-yes则使它几乎穿过所有东西。
–JamesTheAwesomeDude
13年2月26日在13:46
@Vorac不,它只是重定向标准输出(看到错误是IMO所希望的)。
–奥利♦
13 Mar 27 '13 at 13:34
这不是问题的答案;这是一种解决方法。
– Charney Kaye
15年8月19日在19:19
#4 楼
正如您在此处和此处看到的那样您可以执行以下操作:
export DEBIAN_FRONTEND=noninteractive
apt-get -yq install [packagename]
export DEBIAN_FRONTEND=dialog
或一行:
DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
#5 楼
使用apt-get -qq install -y PACKAGE 2> /dev/null
可以:仅显示
-qq
的错误。将错误发送到
/dev/null
(未显示),以便可以安装输出为零的软件包。#6 楼
您可以使用python脚本对每个命令的stdout和stderr进行任何操作。例如,如果要查看仅包含输出最后一行的动态输出,则可以使用以下脚本:#!/usr/bin/python3
import subprocess, sys
process = subprocess.Popen(sys.argv[1:], stdout=subprocess.PIPE)
while process.poll() is None:
stdout = process.stdout.readline().decode()[:-1]
print(stdout,end='\r')
print()
如果您知道如何工作使用python中的字符串,您可以调整脚本以仅以任何希望的格式打印要打印的行。
将上述代码保存在文件中,例如run.py。然后,您可以运行任何命令以动态地仅查看输出的最后一行。例如:
./run.py sudo apt-get install <package>
或:
./run.py sudo apt-get update
注1:不要忘记授予exec脚本权限:
chmod +x run.py
注2:您可以进行适当的符号链接以更方便地使用(或添加脚本路径)到$ PATH环境变量(我不建议这样做):
sudo ln -s <path/to/yourscript.py> /usr/bin/run
之后,您只能使用:
run <command-with-desired-output-format>
评论
您是否尝试过使用-q =#,其中#是安静级别? (在手册中。)您可能要针对此提出错误报告。@PaddyLandau我确实做到了。我不知道为什么要谈论选择以前未选择的程序包,或者为什么这很重要,而且我不确定它是否与vm的状态有关,我在travis-ci上的这些程序上运行它。但是答案很好。
“选择先前未选择的程序包”仅表示程序包管理器包括满足依赖关系所需的程序包。如我先前所写,您可能想提出有关--quiet选项似乎无法正常工作的错误报告。
我很不高兴地报告说,同一症状在Ubuntu 15.04 20150709.
看起来与2009年dpkg问题报告有关:bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617。