Wie kann ich apt-get install leiser machen?

128

Wenn ich es benutze apt-get install -qq mono-devel, erwarte ich laut Hilfe, dass es ruhig ist, mit Ausnahme von Fehlern:

-qq No output except for errors

Stattdessen bekomme ich:

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.

und mehr ...

Tatsächlich werden ein paar hundert Zeilen ausgegeben. Dies scheint nicht mit übereinzustimmen no output except for errors.

Wie kann ich nur dann apt-get installdrucken, wenn Fehler auftreten, die die Installation verhindern?

jbtule
quelle
Haben Sie versucht, -q = # zu verwenden, wobei # eine ruhige Ebene ist? (Es ist im Handbuch.) Sie können einen Fehlerbericht dagegen erstellen.
Paddy Landau
@PaddyLandau hab ich ja gemacht. Ich weiß nicht, warum es darum geht, ein zuvor nicht ausgewähltes Paket auszuwählen, oder warum das wichtig wäre, und ich bin mir nicht sicher, ob es mit dem Status der vms zusammenhängt, auf denen ich dies ausführe , travis-ci . Aber die Antwort hat gut funktioniert.
Jbtule
"Vorher nicht ausgewähltes Paket auswählen" bedeutet einfach, dass der Paketmanager ein Paket enthält, das zur Erfüllung der Abhängigkeiten erforderlich ist. Wie ich bereits geschrieben habe, möchten Sie möglicherweise einen Fehlerbericht erstellen, der darauf --quiethinweist, dass die Option anscheinend nicht richtig funktioniert.
Paddy Landau
Ich bin unglücklich, dasselbe Symptom in Ubuntu 15.04 20150709 zu melden.
Lloyd Dewolf
Dies bezieht sich anscheinend auf den Bericht zum dpkg-Problem 2009: bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617 .
Lloyd Dewolf

Antworten:

83

Die Manpage für apt-get lautet wie folgt:

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}}

Das -qoder -qqFlag sollte vor dem Befehl stehen, wie folgt:

apt-get -qq upgrade

Mike
quelle
3
Das ist die richtige Antwort! Bei jeder praktischen Implementierung müssen Eingabeaufforderungen erhalten bleiben. Richtig verwendet, -qfunktioniert absolut (keine "animierte" Ausgabe) sowie -qq(keine Ausgabe außer Fehlern). Bitte stimme zu!
Charney Kaye
27
Nein, das geht nicht. Selbst -qqvor dem Installationsbefehl bekomme ich noch jede Menge Müll, vom Lesen der Datenbank bis zum Entpacken und Einrichten von Nachrichten.
CrazyCasta
2
Nun, ich habe versucht sudo apt-get -qq -y install mercurial, sudo apt-get install -qq -y mercurial, sudo apt-get -qq install -qq -y mercurialund andere Variationen die noch mehr Qs (obwohl ich alle Unterlagen nicht sehen , dass dies legt nahe , funktionieren würde. Ich bin mit Debian Jessie auf Google Cloud btw (8). Ich habe auch versucht Goetz Antwort und es scheint auch nicht zu funktionieren. Von scheint nicht zu funktionieren Ich meine, ich
bemerke
3
Dies ist Ubuntu 16.04.1, das als Docker-Container ausgeführt wird. Ich vermute, dass die Nachrichten tatsächlich von sind dpkg, was von angerufen wird apt-get. Der Befehl lautet apt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essential. Siehe gist.github.com/stefanlasiewski/…
Stefan Lasiewski
3
In Docker haben Sie zwei Alternativen: (1) Führen Sie jeden Befehl einzeln aus, anstatt ihn zu &&verknüpfen (funktioniert möglicherweise, ist aber nicht der "Docker-Weg"). (2) Leiten Sie die Ausgabe wie in der anderen Antwort nach / dev / null um. Option 2 ist wahrscheinlich die beste Wahl, wenn dieser Fehler vorliegt.
Mike
54

Eine einfache Umleitung könnte dies tun. Es ist nicht genau das, was du im Sinn hattest, ich bin sicher, aber es funktioniert verdammt sicher :)

Kurz gesagt, schlagen Sie einfach > /dev/nullam Ende eines Befehls ein, bei dem Sie alles stdoutins Nichts umleiten möchten . Dinge, die auf ausgegeben werden, stderrwerden weiterhin in der Konsole angezeigt.

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

Kein Müll! Und hier ist, was passiert, wenn wir dumm sind und etwas kaputt machen:

$ apt-get cheese > /dev/null
E: Invalid operation cheese
$
Oli
quelle
7
Das ist ein
kleines
1
Wenn dies ein Teil eines Skripts ist, würden Sie kein sudodavor stellen apt-get. Sie würden nur sudobeim Ausführen des Skripts statt.
Xion
3
@Oli Wenn Sie absolut sicher sind, dass Ihr System nicht in Brand gerät, können Sie dies jederzeit tun sudo apt-get upgrade -qq --force-yes > /dev/null. -qqimpliziert -y, wie WulfHart sagte, und --force-yeslässt es so gut wie alles durchpflügen.
JamesTheAwesomeDude
2
@Vorac Nein, es leitet nur um stdout(es ist wünschenswert, die Fehler zu sehen, IMO).
Oli
3
Dies ist nicht die Antwort auf die Frage; Es ist eine Problemumgehung.
Charney Kaye
42

Wir standen vor dem gleichen Problem. apt-get install -qqentfernt die meisten Ausgaben, aber "(Datenbank wird gelesen ..." bleibt weiterhin bestehen.

Wir haben uns die Quelle von apt angesehen und festgestellt, dass die Ausgabe von dpkg stammt, das von apt gespalten wurde. Dann zeigt die Quelle von dpkg, dass die lästige Ausgabe nur erfolgt, wenn isatty (1) wahr ist. Dies ist nur der Fall, wenn die Gabel pty anstelle von pipe verwendet. Zurück zu apt gibt es eine undokumentierte Konfigurationsvariable, die es erlaubt, anstelle von pty pipe zu verwenden, um das Problem zu lösen:

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

Das zu erwarten kann anderen helfen.

Philippe Goetz
quelle
2
Eigentlich ist das die richtige Antwort. Es ist auch erlaubt, apt-get mit single -q zu starten und einige Ausgaben zu sehen. Es wird kein
nerviges
1
Ich versuche dies auf gcloud debian jessie (8) und lese immer noch Datenbankzeilen und entpacke / richte Zeilen ein.
CrazyCasta
3
Diese Antwort funktioniert nicht für Ubuntu 18.04.
Amedee Van Gasse
1
Es gibt immer noch eine Reihe von Linien
auswählen
1
Das -o=Dpkg::Use-Pty=0hat auf Ubuntu 18.04 perfekt geklappt. Es wird nur eine "Lesedatenbank" anstelle mehrerer Datenbanken mit Fortschrittsaktualisierungen alle 5% angezeigt.
wisbucky
2

Wie Sie hier und hier
sehen können, können Sie Folgendes tun:

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

Oder eine Zeile:

DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename]
Kennzeichen
quelle