Como faço para que o apt-get instale menos barulhento?

98

Se eu usar apt-get install -qq mono-devel , espero que fique em silêncio, exceto pelos erros, de acordo com a ajuda:

-qq No output except for errors

Em vez disso, obtenho:

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.

e mais ...

Na verdade, algumas centenas de linhas valem a saída. Isso não parece coincidir com no output except for errors .

Como faço para que apt-get install imprima somente quando há erros impedindo a instalação?

    
por jbtule 19.02.2013 / 14:48

3 respostas

60

A página man 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}}

O sinalizador -q ou -qq deve ser antes do comando, assim:

apt-get -qq upgrade

    
por Mike 27.04.2015 / 22:37
47

Um redirecionamento simples poderia fazer isso. Não é exatamente o que você tinha em mente, tenho certeza, mas com certeza funciona:)

Em suma, apenas bata > /dev/null no final de qualquer comando onde você deseja redirecionar todo o stdout para o nada. As coisas produzidas em stderr ainda serão exibidas no console.

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

Sem lixo! E eis o que acontece se formos tolos e quebrar alguma coisa:

$ apt-get cheese > /dev/null
E: Invalid operation cheese
$
    
por Oli 19.02.2013 / 15:18
28

Nós enfrentamos o mesmo problema. apt-get install -qq remove a maioria das saídas, mas irritante "(Lendo banco de dados ..." ainda persistem.

Nós 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 é emitida apenas quando isatty (1) é verdadeira. Este é apenas o caso quando o fork usa pty em vez de pipe. De volta ao apt, existe uma variável de configuração não documentada que permite usar pipe em vez de pty, que resolve o problema:

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

Esperar isso pode ajudar os outros.

    
por Philippe Goetz 03.09.2015 / 16:11

Tags