Question Comment rendre apt-get install moins bruyant?


Si j'utilise apt-get install -qq mono-devel, Je m'attends à ce qu'il soit calme, sauf pour les erreurs, selon l'aide:

-qq No output except for errors

Au lieu de cela, je reçois:

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.

et plus...

En fait, quelques centaines de lignes de sortie. Cela ne semble pas correspondre avec no output except for errors.

Comment puis-je réellement obtenir apt-get install imprimer seulement lorsqu'il y a des erreurs qui l'empêchent d'installer?


106
2018-02-19 13:48


origine


Avez-vous essayé d'utiliser -q = # où # est un niveau silencieux? (C'est dans le manuel.) Vous voudrez peut-être signaler un bogue à ce sujet. - Paddy Landau
@PaddyLandau je l'ai fait en effet. Je ne sais pas pourquoi il est question de sélectionner un paquet non sélectionné auparavant ou pourquoi ce serait important, et je ne suis pas sûr que cela soit lié à l'état de la vms sur lequel je travaille, travis-ci. Mais la réponse a bien fonctionné. - jbtule
"Sélectionner un paquet non sélectionné auparavant" signifie simplement que le gestionnaire de paquets inclut un paquet requis pour satisfaire les dépendances. Comme je l’ai écrit précédemment, vous voudrez peut-être faire un rapport de bogue sur le --quiet option apparaissant ne pas fonctionner correctement. - Paddy Landau
Je suis mécontent de signaler ce même symptôme dans Ubuntu 15.04 20150709. - Lloyd Dewolf
On dirait que cela concerne le rapport 2009 sur les dpkg: bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617 . - Lloyd Dewolf


Réponses:


La page de manuel d'apt-get est la suivante:

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

le -q ou -qq le drapeau devrait aller avant la commande, comme ça:

apt-get -qq upgrade


62
2018-04-27 20:37



C'est la bonne réponse! Toute implémentation pratique doit conserver les invites. Utilisé correctement, -q fonctionne absolument (pas de sortie "animée") ainsi que -qq (pas de sortie sauf les erreurs). S'il vous plaît upvote! - charneykaye
Non, ça ne marche pas. Même avec -qq Avant la commande d'installation, je reçois toujours des tonnes de données indésirables, de la lecture de la base de données au déballage et à la configuration des messages. - CrazyCasta
Eh bien, j'ai essayé sudo apt-get -qq -y install mercurial, sudo apt-get install -qq -y mercurial, sudo apt-get -qq install -qq -y mercurial et d'autres variations impliquant encore plus de q (bien que je ne vois aucune documentation suggérant que cela fonctionnerait. J'utilise Debian Jessie sur Google Cloud btw (8). J'ai également essayé la réponse de Goetz et cela ne semble pas être le cas. travailler non plus. Par ne semble pas fonctionner, je veux dire que je ne remarque pas de différence. - CrazyCasta
Ceci est Ubuntu 16.04.1, fonctionnant comme un conteneur Docker. Je suppose que les messages sont en fait de dpkg, qui est appelé par apt-get. La commande est apt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essential. Voir gist.github.com/stefanlasiewski/… - Stefan Lasiewski
Dans Docker, vous avez deux alternatives: (1) exécuter chaque commande séparément plutôt que && les joindre (peut fonctionner, mais ce n’est pas la "méthode du docker") (2) rediriger la sortie vers / dev / null comme dans l’autre réponse. L'option 2 est probablement votre meilleur pari pendant qu'il y a ce bug. - Mike


Une simple redirection pourrait le faire. Ce n'est pas exactement ce que vous aviez en tête, j'en suis sûr, mais c'est sûr que ça marche :)

En bref, il suffit de frapper > /dev/null à la fin de toute commande où vous voulez rediriger tous les stdout dans le néant. Les choses sorties sur stderr montrera toujours dans la console.

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

Pas de bazar! Et voici ce qui arrive si nous sommes stupides et brisons quelque chose:

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

49
2018-02-19 14:18



C'est un peu problématique si vous recevez une invite ... - l0b0
Si cela fait partie d'un script, vous ne mettriez pas de sudo en face de apt-get. Tu voudrais juste sudo lors de l'exécution du script à la place. - Xion
@Oli Si vous êtes absolument certain de ne pas mettre le feu à votre système, vous pouvez toujours sudo apt-get upgrade -qq --force-yes > /dev/null. -qq implique -y, comme l'a dit WulfHart, et --force-yes le fait défoncer à peu près n'importe quoi. - JamesTheAwesomeDude
@Vorac Non, il suffit de rediriger stdout (voir les erreurs est une chose souhaitable IMO). - Oli♦
Ce n'est pas la réponse à la question; c'est une solution de contournement. - charneykaye


Nous avons rencontré le même problème. apt-get install -qq supprime la plupart des sorties mais ennuyeux "(lecture de la base de données ..." persiste toujours).

Nous avons examiné la source d'apt et avons découvert que la sortie est produite par dpkg qui a été créé par apt. La source de dpkg montre alors que le soutput ennuyeux n'est émis que lorsque isatty (1) est vrai. Ce n'est le cas que lorsque la fourche utilise pty à la place. Retour à apt, il y a une variable de configuration non documentée qui permet d'utiliser pipe à la place de pty qui résout alors le problème:

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

S'attendre à ce qui peut aider les autres.


32
2017-09-03 14:11



En fait, c'est la bonne réponse complète. Il permet également de lancer apt-get avec single -q et de voir certains sortie et ne pas voir ennuyeux "lecture de la base de données" - valodzka
@valodzka Sur quelle version d'ubuntu êtes-vous? Sur CircleCI (avec Ubuntu 14.04), il lit parfaitement (Reading database ... 625142 files and directories currently installed.). - koppor
Je l'ai testé sur Debian 8 - valodzka
J'essaie ceci sur gcloud debian jessie (8) et je continue à lire les lignes de base de données et à décompresser / configurer les lignes. - CrazyCasta
Cette réponse ne fonctionne pas pour Ubuntu 18.04. - Amedee Van Gasse