Vraag Hoe maak ik apt-get install minder gehorig?


Als ik gebruik apt-get install -qq mono-devel, Ik verwacht dat het stil is, behalve voor fouten, volgens de hulp:

-qq No output except for errors

In plaats daarvan krijg ik:

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.

en meer...

In feite een paar honderd regels aan output. Dit lijkt niet overeen te komen met no output except for errors.

Hoe kan ik het eigenlijk krijgen apt-get install uitprinten enkel en alleen wanneer er fouten zijn waardoor het niet kan worden geïnstalleerd?


106
2018-02-19 13:48


oorsprong


Heb je geprobeerd -q = # te gebruiken, waarbij # een rustig niveau is? (Het staat in de handleiding.) Misschien wilt u hier een foutenrapport tegen indienen. - Paddy Landau
@PaddyLandau deed ik inderdaad. Ik weet niet waarom het over het selecteren van eerder niet-geselecteerde pakketten gaat, of waarom dat belangrijk zou zijn, en ik weet niet zeker of het gerelateerd is aan de staat van de vms. Ik draai dit hier ook over, travis-ci. Maar het antwoord werkte goed. - jbtule
"Het selecteren van eerder niet-geselecteerd pakket" betekent eenvoudigweg dat de pakketbeheerder een pakket bevat dat is vereist om te voldoen aan afhankelijkheden. Zoals ik eerder schreef, wil je misschien een bugrapport opsturen over de --quiet optie lijkt niet correct te werken. - Paddy Landau
Ik ben niet blij om hetzelfde symptoom te melden in Ubuntu 15.04 20150709. - Lloyd Dewolf
Het ziet ernaar uit dat dit betrekking heeft op het dpkg-probleemrapport van 2009: bugs.debian.org/cgi-bin/bugreport.cgi?bug=539617 . - Lloyd Dewolf


antwoorden:


De man-pagina voor apt-get is als volgt:

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

De -q of -qq vlag zou moeten gaan voor het bevel, zoals zo:

apt-get -qq upgrade


62
2018-04-27 20:37



Dit is het juiste antwoord! Elke praktische implementatie moet de prompts bewaren. Correct gebruikt, -q werkt absoluut (geen "geanimeerde" uitvoer) evenals -qq (geen uitvoer behalve fouten). Up-to-date! - charneykaye
Nee, het werkt niet. Zelfs met -qq voor de opdracht install krijg ik nog steeds veel rommel, van het lezen van de database tot het uitpakken en het instellen van berichten. - CrazyCasta
Nou, ik heb het geprobeerd sudo apt-get -qq -y install mercurial, sudo apt-get install -qq -y mercurial, sudo apt-get -qq install -qq -y mercurial en andere variaties met nog meer q's (hoewel ik geen documentatie zie die suggereert dat dit zou werken.) Ik gebruik Debian Jessie op Google Cloud (8). Ik heb ook Goetz's antwoord geprobeerd en het lijkt niet werk ook. Door lijkt niet te werken Ik bedoel, ik merk geen verschil. - CrazyCasta
Dit is Ubuntu 16.04.1, uitgevoerd als een Docker-container. Mijn gok is dat de berichten echt afkomstig zijn dpkg, die wordt aangeroepen door apt-get. Het commando is apt-get -qq update && apt-get -qq upgrade && apt-get -qq install build-essential. Zien gist.github.com/stefanlasiewski/... - Stefan Lasiewski
In Docker heb je 2 alternatieven: (1) voer elke opdracht apart uit in plaats van met && erbij komen (zou kunnen werken, maar het is niet de "dockermanier") (2) leid de uitvoer om naar / dev / null zoals in het andere antwoord. Optie 2 is waarschijnlijk uw beste gok terwijl er een bug is. - Mike


Een eenvoudige omleiding kan dit doen. Het is niet precies wat je in gedachten had, ik weet het zeker, maar het werkt zeker als het lukt :)

Kortom, gewoon meppen > /dev/null aan het einde van een opdracht waar u alle wilt omleiden stdout in het niets. Dingen uitgevoerd op stderr wordt nog steeds weergegeven in de console.

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

Geen rotzooi! En dit is wat er gebeurt als we gek zijn en iets breken:

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

49
2018-02-19 14:18



Dat is een beetje een probleem als je een prompt krijgt ... - l0b0
Als dit onderdeel is van een script, zou je er geen zetten sudo voor apt-get. Dat zou je gewoon doen sudo bij het uitvoeren van het script. - Xion
@ Oli Als je er absoluut zeker van bent dat je je systeem niet in de fik stookt, kun je dat altijd doen sudo apt-get upgrade -qq --force-yes > /dev/null. -qq impliceert -y, zoals WulfHart zei, en --force-yes laat het door bijna alles heen ploegen. - JamesTheAwesomeDude
@Vorac Nee, het is gewoon doorverwijzen stdout (het zien van de fouten is een wenselijk iets IMO). - Oli♦
Dit is niet het antwoord op de vraag; het is een tijdelijke oplossing. - charneykaye


We hadden hetzelfde probleem. apt-get install -qq verwijdert de meeste outputs, maar irritant "(Reading database ..." blijft bestaan.

We hebben een kijkje genomen in de bron van apt en ontdekten dat de uitvoer wordt geproduceerd door dpkg die is gevorkt door apt. Dan laat de bron van dpkg zien dat de vervelende soutput alleen wordt uitgegeven als isatty (1) waar is. Dit is alleen het geval wanneer de vork pty gebruikt in plaats van pijp. Terug naar apt, er is een configuratievariabele zonder documenten waarmee je in plaats daarvan pijp kunt gebruiken die het probleem dan oplost:

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

Verwachten dat kan anderen helpen.


32
2017-09-03 14:11



Dit is eigenlijk volledig correct antwoord. Het is ook toegestaan ​​om apt-get uit te voeren met single -q en te zien sommige output en zie geen irritante "Reading database" - valodzka
@valodzka Op welke ubuntu-versie staat u? Op CircleCI (met Ubuntu 14.04) staat het wel (Reading database ... 625142 files and directories currently installed.). - koppor
Ik heb het getest op Debian 8 - valodzka
Ik probeer dit op gcloud debian jessie (8) en ik lees nog steeds databaselijnen en lijnen uitpakken / instellen. - CrazyCasta
Dit antwoord werkt niet voor Ubuntu 18.04. - Amedee Van Gasse