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


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


107
2018-02-19 13:48


происхождения


Вы пробовали использовать -q = #, где # - тихий уровень? (Это в руководстве.) Возможно, вы захотите поднять отчет об ошибке. - Paddy Landau
@PaddyLandau Я действительно. Я не знаю, почему это говорит о выборе ранее невыбранного пакета или почему это было бы важно, и я не уверен, связано ли это с состоянием vms, в котором я запускаю это на них, Трэвис-CI, Но ответ сработал хорошо. - jbtule
«Выбор ранее невыделенного пакета» означает, что диспетчер пакетов включает пакет, необходимый для удовлетворения зависимостей. Как я уже писал, вы можете поднять отчет об ошибке --quiet вариант не работает правильно. - Paddy Landau
Я недоволен сообщать об этом же симптоме в Ubuntu 15.04 20150709. - Lloyd Dewolf
Похоже, это относится к отчету о выпуске dpkg 2009 года: bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617 , - Lloyd Dewolf


ответы:


Страница 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


63
2018-04-27 20:37



Это правильный ответ! Любая практическая реализация должна сохранять подсказки. Используется правильно, -q абсолютно работает (нет «анимированного» выхода), а также -qq (без вывода, кроме ошибок). Пожалуйста, поддержите! - charneykaye
Нет, это не сработает. Даже с -qq перед командой установки я до сих пор получаю массу нежелательной информации от чтения базы данных до распаковки и настройки сообщений. - CrazyCasta
Ну, я попробовал sudo apt-get -qq -y install mercurial, sudo apt-get install -qq -y mercurial, sudo apt-get -qq install -qq -y mercurial и другие варианты, связанные с еще большим количеством q (хотя я не вижу никакой документации, которая говорит, что это сработает. Я запускаю Debian Jessie в google cloud btw (8). Я также пробовал ответ Goetz, и это не похоже на работа тоже. Похоже, я не работаю, я имею в виду, что я не замечаю разницы. - CrazyCasta
Это Ubuntu 16.04.1, работающий как контейнер Docker. Я предполагаю, что сообщения на самом деле dpkg, который вызывается apt-get, Команда apt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essential, Видеть gist.github.com/stefanlasiewski/... - Stefan Lasiewski
В Docker у вас есть 2 варианта: (1) запускать каждую команду отдельно, а не с помощью && (может работать, но это не «путь докеров») (2) перенаправить вывод на / dev / null, как в другом ответе. Вариант 2, вероятно, ваш лучший выбор, пока есть эта ошибка. - Mike


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

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

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

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

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

49
2018-02-19 14:18



Это немного проблема, если вы получите подсказку ... - l0b0
Если это часть скрипта, вы не ставили бы sudo перед apt-get, Вы бы просто sudo при запуске скрипта. - Xion
@Oli Если вы абсолютно уверены, что не собираетесь загорать вашу систему, вы всегда можете sudo apt-get upgrade -qq --force-yes > /dev/null, -qq подразумевает -y, как сказал Вульфхарт, и --force-yes заставляет его вспахивать что угодно. - JamesTheAwesomeDude
@Vorac Нет, это просто перенаправление stdout (видение ошибок - это желательная вещь ИМО). - Oli♦
Это не ответ на вопрос; это обходной путь. - charneykaye


Мы столкнулись с той же проблемой. 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>

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


32
2017-09-03 14:11



На самом деле это полный правильный ответ. Это также позволяет запускать apt-get с одним -q и видеть некоторые вывода и не вижу раздражающего «Чтение базы данных», - valodzka
@valodzka Какая версия ubuntu у вас? На CircleCI (с Ubuntu 14.04) он убегает (Reading database ... 625142 files and directories currently installed.), - koppor
Я тестировал его на Debian 8 - valodzka
Я пробую это на gcloud debian jessie (8), и я все еще получаю чтение строк базы данных и распаковки / настройки строк. - CrazyCasta
Этот ответ не работает для Ubuntu 18.04. - Amedee Van Gasse