Mein potenzieller Hosting-Anbieterschlägt voreinen Befehl im Terminal auszuführen, um das Betriebssystem-Image des KVM-basierten Servers zu minimieren. Da ihre KVM-Vorlagen Pakete enthalten, die ich nicht brauche, dachte ich, ich könnte denselben Befehl verwenden, um unerwünschte Pakete zu entfernen.
Dieser Befehl beginnt mit DEBIAN_FRONTEND=noninteractive
und wird dann apt-get remove
wie folgt aufgerufen:
DEBIAN_FRONTEND=noninteractive apt-get remove --purge -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" package-1 package-2 ... package-n; apt-get -y autoremove; apt-get clean all
Ich stoße zum ersten Mal auf diese DEBIAN_FRONTEND
Umgebungsvariable und konnte bisher keine nützlichen Informationen dazu finden. Ich frage mich also, was das Setzen dieser Variable noninteractive
bewirkt und ob es ratsam ist, da ich davon ausgehe, dass der Wert ( noninteractive
) bestehen bleibt.
Antwort1
Das einfache Voranstellen eines apt
Befehls DEBIAN_FRONTEND=something
bleibt nach dem einzelnen Befehl, auf den es angewendet wird, nicht bestehen.
Die DEBIAN_FRONTEND
Optionen sind in den Manualpages von Abschnitt 7 dokumentiert debconf
(Sie müssen das Paket möglicherweise installieren debconf-doc
, um diese auf Ihrem System verfügbar zu machen). Von man 7 debconf
:
Frontends
One of debconf's unique features is that the interface it presents to
you is only one of many, that can be swapped in at will. There are many
debconf frontends available:
dialog The default frontend, this uses the whiptail(1) or dialog(1)
programs to display questions to you. It works in text mode.
readline
The most traditional frontend, this looks quite similar to how
Debian configuration always has been: a series of questions,
printed out at the console using plain text, and prompts done
using the readline library. It even supports tab completion. The
libterm-readline-gnu-perl package is strongly recommended if you
chose to use this frontend; the default readline module does not
support prompting with default values. At the minimum, you'll
need the perl-modules package installed to use this frontend.
This frontend has some special hotkeys. Pageup (or ctrl-u) will
go back to the previous question (if that is supported by the
package that is using debconf), and pagedown (or ctrl-v) will
skip forward to the next question.
This is the best frontend for remote admin work over a slow con‐
nection, or for those who are comfortable with unix.
noninteractive
This is the anti-frontend. It never interacts with you at all,
and makes the default answers be used for all questions. It
might mail error messages to root, but that's it; otherwise it
is completely silent and unobtrusive, a perfect frontend for
automatic installs. If you are using this front-end, and require
non-default answers to questions, you will need to preseed the
debconf database; see the section below on Unattended Package
Installation for more details.
Außerdem wird Folgendes festgestellt:
You can change the default frontend debconf uses by reconfiguring deb‐
conf. On the other hand, if you just want to change the frontend for a
minute, you can set the DEBIAN_FRONTEND environment variable to the
name of the frontend to use. For example:
DEBIAN_FRONTEND=readline apt-get install slrn
The dpkg-reconfigure(8) and dpkg-preconfigure(8) commands also let you
pass --frontend= to them, followed by the frontend you want them to
use.
Note that not all frontends will work in all circumstances. If a fron‐
tend fails to start up for some reason, debconf will print out a mes‐
sage explaining why, and fall back to the next-most similar frontend.
Antwort2
Beim Schreiben unbeaufsichtigter Skripte (einschließlich Dockerfiles), bei der Verwendung von apt install -y
butohne DEBIAN_FRONTEND=noninteractive
, manchmal bleibt die Installation bei einer interaktiven Eingabeaufforderung hängen.
Durch Ausführen des Installationsbefehls DEBIAN_FRONTEND=noninteractive
werden diese interaktiven XPrompts deaktiviert.