apt-get Silent Install

nexus

Well-Known Member
Hey Leute,

ich brauch mal einen Denkanstoß.

Ich bin gerade dabei, meine Kenntnisse im Bereich Bash-Scripting ein wenig aufzufrischen, dabei bin ich auf ein kleines Problem gestoßen.
Wenn ich z.B. den Befehl:
Code:
apt-get -qq -y install mariadb-server
absende, soll laut der Manpage von apt der Parameter -qq bewirken, daß nur im Fehlerfall Ausgaben in der Konsole erscheinen sollen.
Entgegen der Aussage aus der Manpage bekomme ich aber reichlich Infos auf der Konsole, die ich eigentlich vermeiden will:
Code:
root@deb8:~# apt-get -qq -y install mariadb-server
Vorkonfiguration der Pakete ...
Vormals nicht ausgewähltes Paket libaio1:amd64 wird gewählt.
(Lese Datenbank ... 30320 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../libaio1_0.3.110-1_amd64.deb ...
Entpacken von libaio1:amd64 (0.3.110-1) ...
Vormals nicht ausgewähltes Paket mysql-common wird gewählt.
Vorbereitung zum Entpacken von .../mysql-common_5.5.53-0+deb8u1_all.deb ...
Entpacken von mysql-common (5.5.53-0+deb8u1) ...
Vormals nicht ausgewähltes Paket libmysqlclient18:amd64 wird gewählt.
Vorbereitung zum Entpacken von .../libmysqlclient18_5.5.53-0+deb8u1_amd64.deb ...
Entpacken von libmysqlclient18:amd64 (5.5.53-0+deb8u1) ...
Vormals nicht ausgewähltes Paket libreadline5:amd64 wird gewählt.
Vorbereitung zum Entpacken von .../libreadline5_5.2+dfsg-2_amd64.deb ...
Entpacken von libreadline5:amd64 (5.2+dfsg-2) ...
Vormals nicht ausgewähltes Paket mariadb-common wird gewählt.
Vorbereitung zum Entpacken von .../mariadb-common_10.0.28-0+deb8u1_all.deb ...
Entpacken von mariadb-common (10.0.28-0+deb8u1) ...
Vormals nicht ausgewähltes Paket libdbi-perl wird gewählt.
Vorbereitung zum Entpacken von .../libdbi-perl_1.631-3+b1_amd64.deb ...
Entpacken von libdbi-perl (1.631-3+b1) ...
Vormals nicht ausgewähltes Paket libterm-readkey-perl wird gewählt.
Vorbereitung zum Entpacken von .../libterm-readkey-perl_2.32-1+b1_amd64.deb ...
Entpacken von libterm-readkey-perl (2.32-1+b1) ...
Vormals nicht ausgewähltes Paket mariadb-client-core-10.0 wird gewählt.
Vorbereitung zum Entpacken von .../mariadb-client-core-10.0_10.0.28-0+deb8u1_amd64.deb ...
Entpacken von mariadb-client-core-10.0 (10.0.28-0+deb8u1) ...
Vormals nicht ausgewähltes Paket mariadb-client-10.0 wird gewählt.
Vorbereitung zum Entpacken von .../mariadb-client-10.0_10.0.28-0+deb8u1_amd64.deb ...
Entpacken von mariadb-client-10.0 (10.0.28-0+deb8u1) ...
Vormals nicht ausgewähltes Paket mariadb-server-core-10.0 wird gewählt.
Vorbereitung zum Entpacken von .../mariadb-server-core-10.0_10.0.28-0+deb8u1_amd64.deb ...
Entpacken von mariadb-server-core-10.0 (10.0.28-0+deb8u1) ...
Trigger für man-db (2.7.0.2-5) werden verarbeitet ...
mysql-common (5.5.53-0+deb8u1) wird eingerichtet ...
mariadb-common (10.0.28-0+deb8u1) wird eingerichtet ...
Vormals nicht ausgewähltes Paket mariadb-server-10.0 wird gewählt.
(Lese Datenbank ... 30658 Dateien und Verzeichnisse sind derzeit installiert.)
Vorbereitung zum Entpacken von .../mariadb-server-10.0_10.0.28-0+deb8u1_amd64.deb ...
Entpacken von mariadb-server-10.0 (10.0.28-0+deb8u1) ...
Vormals nicht ausgewähltes Paket libdbd-mysql-perl wird gewählt.
Vorbereitung zum Entpacken von .../libdbd-mysql-perl_4.028-2+deb8u2_amd64.deb ...
Entpacken von libdbd-mysql-perl (4.028-2+deb8u2) ...
Vormals nicht ausgewähltes Paket libhtml-template-perl wird gewählt.
Vorbereitung zum Entpacken von .../libhtml-template-perl_2.95-1_all.deb ...
Entpacken von libhtml-template-perl (2.95-1) ...
Vormals nicht ausgewähltes Paket mariadb-server wird gewählt.
Vorbereitung zum Entpacken von .../mariadb-server_10.0.28-0+deb8u1_all.deb ...
Entpacken von mariadb-server (10.0.28-0+deb8u1) ...
Trigger für man-db (2.7.0.2-5) werden verarbeitet ...
Trigger für systemd (215-17+deb8u5) werden verarbeitet ...
libaio1:amd64 (0.3.110-1) wird eingerichtet ...
libmysqlclient18:amd64 (5.5.53-0+deb8u1) wird eingerichtet ...
libreadline5:amd64 (5.2+dfsg-2) wird eingerichtet ...
libdbi-perl (1.631-3+b1) wird eingerichtet ...
libterm-readkey-perl (2.32-1+b1) wird eingerichtet ...
mariadb-client-core-10.0 (10.0.28-0+deb8u1) wird eingerichtet ...
mariadb-client-10.0 (10.0.28-0+deb8u1) wird eingerichtet ...
mariadb-server-core-10.0 (10.0.28-0+deb8u1) wird eingerichtet ...
mariadb-server-10.0 (10.0.28-0+deb8u1) wird eingerichtet ...
161204 17:03:34 [Note] /usr/sbin/mysqld (mysqld 10.0.28-MariaDB-0+deb8u1) starting as process 2145 ...
libdbd-mysql-perl (4.028-2+deb8u2) wird eingerichtet ...
libhtml-template-perl (2.95-1) wird eingerichtet ...
mariadb-server (10.0.28-0+deb8u1) wird eingerichtet ...
Trigger für libc-bin (2.19-18+deb8u6) werden verarbeitet ...
Trigger für systemd (215-17+deb8u5) werden verarbeitet ...
root@deb8:~#

Wo habe ich meinen Denkfehler?

Achja, verwendetes OS ist übrigens Debian Jessie.
 
A

andreas0

Guest
@nexus: Du könntest alles wie folgt umleiten:

apt-get -qq -y install mariadb-server &> Datei.txt

oder

apt-get -qq -y install mariadb-server &>/dev/null


Möchtest du Fehler mitloggen, so sieht der Befehl wie folgt aus:

apt-get -qq -y install mariadb-server 1>/dev/null 2>fehler.log

oder

apt-get -qq -y install mariadb-server >/dev/null 2>fehler.log
 
Last edited by a moderator:

nexus

Well-Known Member
Ich hab auch erstmal die Standardausgabe nach /dev/null umgeleitet, also:

Code:
apt-get -y install mariadb-server >/dev/null

Fehlermeldungen landen so ja weiterhin auf der Konsole.

Allerdings wollte ich es mit dem Parameter -qq eben ein bissel "schicker" machen.
Mir stellt sich da allerdings die Frage, wofür der Parameter -qq dann überhaupt gut sein soll, wenn er eigentlich genau das machen soll aber nicht macht, was ich letztlich mit der Umleitung gemacht habe...
 
Last edited by a moderator:
A

andreas0

Guest
Du könntest im Befehl ja mal den Schalter -y weglassen. Eventuell erschlägt der Schalter -qq die YES-Abfrage mit dem Schalter -y gleich mit.
 

p-st

Member
Mir stellt sich da allerdings die Frage, wofür der Parameter -qq dann überhaupt gut sein soll, wenn er eigentlich genau das machen soll aber nicht macht, was ich letztlich mit der Umleitung gemacht habe...

In der Manpage für apt-get steht zum Parameter -q bzw. --quiet folgendes:

Produces output suitable for logging, omitting progress indicators.

Es wird also die Ausgabe so aufbereitet, dass sie in eine Logdatei geschrieben werden kann.
 

nexus

Well-Known Member
In der Manpage für apt-get steht zum Parameter -q bzw. --quiet folgendes:

Produces output suitable for logging, omitting progress indicators.

Es wird also die Ausgabe so aufbereitet, dass sie in eine Logdatei geschrieben werden kann.

Jupp. Und im nächsten Satz steht:

More q's will produce more quiet up to a maximum of two.

Diese Aussage verstehe ich so, daß maximal -qq (maximum of two) als Parameter gültig ist, was auch bei einem:

apt-get -h

nach meiner Interpretation bestätigt wird:

Code:
Optionen:
  -q   protokollierbare Ausgabe – keine Fortschrittsanzeige
  -qq  keine Ausgabe, außer bei Fehlern

Wobei natürlich offen bleibt, was unter

Code:
...will produce more quiet...

genau zu verstehen ist. Keinerlei Ausgabe offensichtlich nicht.

Naja, ich werde wohl bei der Umleitung nach /dev/null bleiben, hat ja bisher auch immer zuverlässig funktioniert. ;)
 

p-st

Member
Hm, die Aussage

-qq keine Ausgabe, außer bei Fehlern

von 'apt-get --help' scheint nicht zu stimmen. Die Aussage in der Man-Page scheint dagegen zu passen.

Vielleicht gab es dieses Verhalten in früheren Versionen von Debian mal und es handelt sich hier um eine veraltete Doku. Ich habe testweise auf meiner Debian 7 (Wheezy) VM versucht, dies nachzustellen. Dort verhält es sich jedoch genauso wie mit Debian 8 (Jessie). Ein älteres Debian habe ich leider nicht mehr griffbereit...

Ich würde hier auch einfach nach /dev/null umleiten.
 

DeaD_EyE

Blog Benutzer
Ich leite auch einfach nach &>/dev/null um. &> leitet in der Bash STDOUT und STDERR um.

Man sollte sich nur bewusst sein, dass man dadurch auch keine Fehler mehr sieht, es seiden man leitet in eine Datei um und/oder wertet den Rückgabewert aus.

Ich nutze es in einem Shell-Script um die Umgebung einzurichten.

Code:
#!/bin/bash

RED="\u001b[31;1m"
GREEN="\u001b[32;1m"
RESET="\u001b[0m"
POS="\u001b[50G"
clear

function ok() {
	echo -e "${POS}${GREEN}[  ok  ]${RESET}"
	}

function fail(){
	echo -e "${POS}${RED}[ fail ]${RESET}"
	}

echo -e "$RED"
echo "#############################################"
echo "# Following components have to be attached  #"
echo "#                                           #"
echo "# - Transceiver / power / config / data     #"
echo "# - FTDI must be attached to the USB        #"
echo "# - CMPS10/11                               #"
echo "# - WiFi Dongle TL-WN722N                   #"
echo "#                                           #"
echo "#############################################"
echo
echo -ne "${GREEN}Press enter to continue. "
echo -ne "$RESET"
read


#######################################################
#                    Internet                         #
#######################################################

function test_internet() {
	ping -c1  google.de &> /dev/null && echo 1 || echo 0
}

function internet() {
	while true; do
                INTERNET=$(test_internet)
                if [ "$INTERNET" -eq "1" ]; then break; fi
		echo "Connecting to AP"
                pkill -9 wpa_supplicant
                sleep 1
                ./internet.sh
                sleep 10
	done
	}

internet

echo -n "Setting Hostname..." && ok
echo "skyradar" > /etc/hostname

#######################################################
#                    Systemwide                       #
#######################################################
echo -n "Activating sources..."
sed -i.old 's/^#deb-src/deb-src/g' /etc/apt/sources.list && ok || fail
echo -n "Updating package list... "
apt-get update &> /dev/null && ok || fail
echo -n "Upgrading packages... "
apt-get upgrade -y &> /dev/null && ok || fail
echo -n "Doing dist-upgrade..."
apt-get dist-upgrade -y &> /dev/null && ok || fail
echo -n "Installing packages..."
apt-get install -y build-essential dnsmasq git hostapd htop i2c-tools iw libftdi-dev libi2c-dev mc netdiscover python-dev python-pip python-virtualenv python3 python3-dev python3-pip python3-venv screen supervisor tmux wireless-tools -y &> /dev/null && ok || fail
 
Top