apt-getインストールのノイズを少なくするにはどうすればよいですか?


128

を使用する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に印刷するにはどうすればよいですか?


-q =#を使用してみましたか?#は静かなレベルです (それはマニュアルにあります。)これに対してバグ報告を提出したいかもしれません。
水田ランダウ

@PaddyLandau確かにやりました。以前に選択されていなかったパッケージを選択する理由や、それが重要になる理由がわかりません。また、travis -ciでこれらを実行しているvmsの状態に関連しているかどうかはわかりません。しかし、答えはうまくいきました。
jbtule

「以前に選択されていなかったパッケージを選択する」とは、パッケージマネージャーに依存関係を満たすために必要なパッケージが含まれていることを意味します。以前に書いたように、--quietオプションが正しく機能していないように見えるバグレポートを提出したい場合があります。
水田ランダウ

私はUbuntuの15.04 20150709.に同じ症状を報告する不幸だ
ロイドDewolf

これは、2009 dpkgの問題レポート:bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617に関連しているようです
ロイドデウルフ

回答:


83

apt-getのmanページは次のとおりです。

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


3
これは正解です!実用的な実装では、プロンプトを保持する必要があります。正しく使用すると、-q絶対に機能します(「アニメーション化された」出力なし)-qq(エラー以外の出力なし)。賛成してください!
チャーニーケイ

27
いいえ、機能しません。-qqインストールコマンドを実行する前でも、データベースの読み取りからメッセージのアンパックおよびセットアップに至るまで、大量の迷惑メールを受け取ります。
CrazyCasta

2
まあ、私が試したsudo apt-get -qq -y install mercurialsudo apt-get install -qq -y mercurialsudo apt-get -qq install -qq -y mercurialおよび関連する他のバリエーションにもよりQの(私はこれが仕事と示唆して任意のドキュメントを参照していないのに。私はGoogleのクラウド上のDebianジェシーを実行しているところで(8)。私も試したゲッツさん答えて、それも機能していないようです。機能していないように見えるので、私は違いに気付かないことを意味します
CrazyCasta

3
これは、Dockerコンテナーとして実行されるUbuntu 16.04.1です。私の推測では、メッセージは実際に発信されたものdpkgであり、それはによって呼ばれapt-getます。コマンドはapt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essentialです。gist.github.com/stefanlasiewski/…を
Stefan Lasiewski

3
Dockerには2つの選択肢があります:(1)各コマンドを&&結合するのではなく個別に実行します(機能する可能性がありますが、「ドッカーの方法」ではありません)(2)他の回答のように出力を/ dev / nullにリダイレクトします。このバグが存在する場合、おそらくオプション2が最善の策です。
マイク

55

簡単なリダイレクトでこれを行うことができます。それはあなたが念頭に置いていたものではありません、私は確信していますが、それは地獄のように動作します:)

要するに、> /dev/nullすべてstdoutを無にリダイレクトしたいコマンドの最後を叩くだけです。出力されたものstderrは引き続きコンソールに表示されます。

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

ジャンクなし!そして、私たちが愚かで何かを壊した場合に起こることは次のとおりです:

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

7
プロンプトが表示された場合、それは少し問題です
...-l0b0

1
これがスクリプトの一部である場合sudo、の前にを置かないでしょうapt-getsudo代わりにスクリプトを実行するときだけです。
シオン

3
@Oliシステムに火をつけないことを絶対に確信しているなら、いつでもできますsudo apt-get upgrade -qq --force-yes > /dev/null。WulfHartが言った-qqよう-yに、それはほのめかし、何でもかんでも--force-yes通します。
ジェームズTheAwesomeDude

2
@Voracいいえ、単にリダイレクトしstdoutているだけです(エラーを見ることはIMOにとって望ましいことです)。
オリ

3
これは質問に対する答えではありません。これは回避策です。
チャーニーケイ

42

同じ問題に直面しました。apt-get install -qqほとんどの出力を削除しますが、迷惑な「(Reading database ...」はまだ持続します。

aptのソースを調べてみると、出力はaptによってフォークされたdpkgによって生成されていることがわかりました。その後、dpkgのソースは、厄介なsoutputがisatty(1)がtrueの場合にのみ発行されることを示しています。これは、forkがパイプではなくptyを使用する場合のみです。aptに戻ると、ptyの代わりにpipeを使用して問題を解決できる文書化されていない構成変数があります。

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

他の人を助けることができると期待しています。


2
実際、これは完全な正解です。また、単一の-qとapt-getとご覧実行することができますいくつかの出力をし、「データベースの見方」で迷惑表示されていない
valodzka

1
私はgcloud debian jessie(8)でこれを試していますが、データベースの行を読んだり、行を展開/設定したりします。
CrazyCasta

3
この回答はUbuntu 18.04では機能しません。
アメディーヴァンガッセ

1
行の選択/準備/セットアップがまだたくさんあります...
1

1
-o=Dpkg::Use-Pty=0Ubuntuの18.04で完璧に働きました。5%ごとに更新される複数のデータベースではなく、1つの「読み取りデータベース」のみが表示されます。
ウィスバッキー

2

ここここで見る
ことができるようにあなたができること:

export DEBIAN_FRONTEND=noninteractive
apt-get -yq install [packagename]
export DEBIAN_FRONTEND=dialog

または1行:

DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.