
Se eu usar apt-get install -qq mono-devel
, espero que fique tranquilo exceto erros, conforme o help:
-qq No output except for errors
Em vez disso, recebo:
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.
emais...
Na verdade, algumas centenas de linhas de saída. Isso não parece corresponder a no output except for errors
.
Como faço apt-get install
para imprimirapenasquando há erros que impedem a instalação?
Responder1
A página de manual do apt-get é a seguinte:
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}}
A bandeira -q
ou -qq
deve iranteso comando, assim:
apt-get -qq upgrade
Responder2
Enfrentamos o mesmo problema. apt-get install -qq
remove a maioria das saídas, mas o irritante "(Leitura do banco de dados ..." ainda persiste.
Demos uma olhada na fonte do apt e descobrimos que a saída é produzida pelo dpkg que foi bifurcado pelo apt. Então a fonte do dpkg mostra que a saída irritante só é emitida quando isatty(1) é verdadeiro. Este é apenas o caso quando o garfo usa pty em vez de tubo. De volta ao apt, existe uma variável de configuração não documentada que permite usar pipe em vez de pty, o que resolve o problema:
apt-get install -qq -o=Dpkg::Use-Pty=0 <packages>
Esperar isso pode ajudar outras pessoas.
Responder3
Um simples redirecionamento poderia fazer isso. Não é exatamente o que você tinha em mente, tenho certeza, mas com certeza funciona :)
Resumindo, basta bater > /dev/null
no final de qualquer comando onde você deseja redirecionar tudo stdout
para o nada. As coisas geradas stderr
ainda serão exibidas no console.
$ sudo apt-get update > /dev/null
[sudo] password for oli:
$
Sem lixo! E aqui está o que acontece se formos bobos e quebrarmos alguma coisa:
$ apt-get cheese > /dev/null
E: Invalid operation cheese
$
Responder4
Com apt-get -qq install -y PACKAGE 2> /dev/null
você pode:
- Mostre apenas os erros com
-qq
. - Envie os erros para
/dev/null
(não mostrar) para que você possa instalar um pacote com saída zero.