Как сделать установку apt-get менее шумной?

Как сделать установку 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.

Как мне на самом деле 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

решение2

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

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

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

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

решение3

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

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

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

Никакого хлама! А вот что случится, если мы сглупим и что-нибудь сломаем:

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

решение4

С помощью apt-get -qq install -y PACKAGE 2> /dev/nullвы можете:

  1. Показывать только ошибки с -qq.
  2. Отправьте ошибки /dev/null(не показывать), чтобы с их помощью можно было установить пакет с нулевым выводом.

Связанный контент