Как сделать apt-get install менее шумным?

92

Если я использую 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 для печати only , если есть ошибки, связанные с его установкой?

    
задан jbtule 19.02.2013 в 14:48
источник

3 ответа

55

Страница man для 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     

ответ дан Mike 27.04.2015 в 22:37
источник
47

Простое перенаправление может сделать это. Это не совсем то, что вы имели в виду, я уверен, но он уверен, что ад работает:)

Короче говоря, просто удалите > /dev/null в конце любой команды, где вы хотите перенаправить все stdout в ничто. Вещи, полученные на stderr , будут отображаться на консоли.

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

Нет барахла! И вот что происходит, если мы глупы и что-то сломаем:

$ apt-get cheese > /dev/null
E: Invalid operation cheese
$
    
ответ дан Oli 19.02.2013 в 15:18
25

Мы столкнулись с той же проблемой. apt-get install -qq удаляет большую часть выходов, но раздражает "(Чтение базы данных ..." по-прежнему сохраняется.

Мы посмотрели в источнике apt и обнаружили, что вывод производится dpkg, который был разветвлен apt. Затем источник dpkg показывает, что раздражающий soutput выдается только тогда, когда isatty (1) истинно. Это только тот случай, когда fork использует pty вместо pipe. Вернемся к apt, есть недокументированная конфигурация, которая позволяет использовать pipe вместо pty, который затем решает проблему:

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

Ожидание, что это может помочь другим.

    
ответ дан Philippe Goetz 03.09.2015 в 16:11