apt-get -q flag fails to squelch status -qq hides everything
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
According to the docs, apt-get install -q foo should install the package foo, while suppressing progress messages. It does not. Quiet level 2 (-qq or -q=2) will suppress those messages, but also suppresses errors/summary. There is no middle ground.
Example:
$ sudo apt-get install -q=1 mysql-server
Reading package lists...
Building dependency tree...
Reading state information...
mysql-server is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
$ sudo apt-get install -q=2 mysql-server
$
The second example is probably correct output, but the first should suppress "Reading package lists..." type output as they are, as defined in the man page, "progress indicators". Certainly -q should output "mysql-server is already the newest version" which amounts to an error message. It's arguable if the summary "0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded" should be included or not. Either way, the docs are pretty clear that the progress messages don't belong there at all.
Another approach would be to add a -q=3 which does what -q=2 does now, and make -q=2 suppress the progress indicators, but then what exactly is -q=1 doing? There must be some output that it does suppress, but I'm not able to tell what it is.
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: apt 0.8.13.2ubuntu4.2
ProcVersionSign
Uname: Linux 2.6.38-11-generic x86_64
Architecture: amd64
Date: Fri Oct 14 12:13:20 2011
InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release amd64 (20110427.1)
ProcEnviron:
LANGUAGE=en_US:en
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: apt
UpgradeStatus: No upgrade log present (probably fresh install)
Changed in apt (Ubuntu): | |
status: | Confirmed → Won't Fix |
Progress indicators are these spinning wheels, the digits progressing slowly from 0 to 100 (%) and all that stuff. As the manpage says quiet level 1 "produces output suitable for logging" thousands of lines saying
Reading package lists... 0%
Reading package lists... 0%
Reading package lists... 1%
Reading package lists... 2%
…
aren't that useful and are therefore what is disabled (=thousand of lines as removing previous lines isn't possible on non-tty output). One line telling what is currently done on the other hand is suitable for logging and useful in some cases.
Btw "mysql-server is already the newest version." is not an error message. It is just an information for the user - the command keeps the promise "After the command packge mysql-server is installed" for the user, that it doesn't need to do anything for it isn't an error…