DEBCONF(7) | Miscellaneous Information Manual | DEBCONF(7) |
NAME¶
debconf - Debian-Paket-Konfigurationssystem
BESCHREIBUNG¶
Debconf ist ein Konfigurationssystem für Debian-Pakete. Es gibt auch einen selten verwandten Befehl namens debconf, der in debconf(1) dokumentiert ist.
Debconf stellt eine konsistente Schnittstelle zur Paketkonfiguration bereit und erlaubt es Ihnen, aus mehreren Benutzerschnittstellen auszuwählen. Es unterstützt die Vorkonfiguration von Paketen vor der Installation, womit bei großen Installationen und Upgrades alle notwendigen Informationen am Anfang abgefragt werden können und Sie dann während der Installation selbst sich anderen Dingen widmen können. Falls Sie in Eile sind, können Sie damit während der Paketinstallation weniger wichtige Fragen und Informationen überspringen (und diese dann später nochmal angehen).
Pakete vorkonfigurieren¶
Debconf kann sogar Pakete konfigurieren, bevor Sie auf Ihrem System installiert sind. Dies ist nützlich, weil damit alle Fragen, die die Pakete stellen werden, am Anfang der Installation gestellt werden können, so dass der Rest der Installation ablaufen kann, während Sie eine Tasse Kaffee holen.
Falls Sie Apt (Version 0.6 oder neuer) verwenden und apt-utils ist installiert, wird jedes von Apt installierte Paket automatisch vorkonfiguriert. Dies wird über /etc/apt/apt.conf.d/70debconf gesteuert.
Manchmal möchten Sie vielleicht ein Paket von Hand vorkonfigurieren, wenn Sie es nicht mit APT installieren. Sie können dpkg-preconfigure (8)benutzen, um das zu machen, übergeben Sie einfach die Dateinamen der Pakete, die Sie vorkonfigurieren wollen. Damit dies funktioniert, muss das Paket apt-utils installiert sein.
Pakete erneut konfigurieren¶
Angenommen Sie haben ein Paket installiert und Debconfs Fragen beantwortet, aber nun, da Sie es eine Weile benutzt haben, erkennen Sie, dass Sie zurückgehen und einige Ihrer Antworten ändern wollen. Früher mussten Sie das Paket erneut installieren, wenn Sie in diese Situation gerieten. Wenn Sie aber das Paket erneut installieren, scheint Debconf sich zu erinnern, dass Sie die Fragen beantwortet haben, und stellt sie nicht erneut (Dies ist eine Funktionalität).
Glücklicherweise macht es Debconf einfach, jedes Paket, das
es benutzt, erneut zu konfigurieren. Angenommen, Sie wollen Debconf selbst
erneut konfigurieren. Führen Sie als root einfach das Folgende aus:
dpkg-reconfigure debconf
Dies stellt alle Fragen, die Sie sahen, als Debconf das erste Mal installiert wurde. Es mag Ihnen auch andere Fragen stellen, weil es selbst Fragen mit niedriger Priorität stellt, die übersprungen wurden, als das Paket installiert wurde. Sie können diesen Befehl auch mit jedem anderen Paket verwenden, das Debconf benutzt.
Benutzerschnittstellen (Frontends)¶
Eines von Debconfs einzigartigen Funktionalitäten ist, dass die Ihnen präsentierte Schnittstelle nur eine von vielen ist, die nach Belieben ausgetauscht werden kann. Es gibt viele Debconf-Benutzerschnittstellen:
- dialog
- Die vorgegeben Benutzerschnittstelle, diese benutzt die Programme whiptail(1) oder dialog(1), um die Fragen an Sie anzuzeigen. Sie arbeitet im Textmodus.
- readline
Diese Benutzerschnittstelle hat einige Sondertasten. Bild-nach-oben (oder Ctrl-u) geht zur vorigen Frage zurück (falls dies von dem Debconf-benutzenden Paket unterstützt) und Bild-nach-unten (oder Ctrl-v) springt weiter zur nächsten Frage.
Dies ist die beste Benutzerschnittstelle für Administrationsarbeit aus der Ferne über eine langsame Verbindung oder für alle, die mit Unix vertraut sind.
- noninteractive
- Dies ist die Anti-Benutzerschnittstelle. Sie tritt nie mit Ihnen in Kontakt, und lässt für alle Fragen die vorgegebenen Antworten benutzen. Sie mag Fehlermeldungen an root mailen, aber das war es; ansonsten ist sie komplett still und unaufdringlich, eine perfekte Schnittstelle für automatische Installationen. Falls Sie diese Benutzerschnittstelle benutzen und nicht-vorgegebene Antworten auf Fragen benötigen, müssen Sie die Debconf-Datenbank mit Voreinstellungen versehen; für weitere Details siehe unten den Abschnitt »Unbeaufsichtigte Paket-Installation«.
- gnome
- Dies ist eine modern X-GUI, die die GTK und GNOME-Bibliotheken benutzt. Natürlich benötigtes es zum Funktionieren ein gültiges DISPLAY; Debconf greift auf andere Benutzerschnittstellen zurück, falls sie nicht funktionieren kann. Beachten Sie, dass diese Benutzerschnittstelle die Installation des Pakets libgtk3-perl erfordert.
- kde
- Diese Benutzerschnittstelle stellt eine moderne X-Benutzerschnittstelle auf der KDE-Plattform bereit. Sie benötigen natürlich ein DISPLAY, um diese Oberfläche zu benutzen und müssen das Hilfspaket debconf-kde-helper installieren. Die Schnittstelle fällt auf Dialog zurück, falls einige der Voraussetzungen nicht zutreffen.
- editor
- Dies ist für diese Fanatiker, die alles mit einem Texteditor erledigen müssen. Es ruft Ihren Editor mit einer Datei auf, die ein wenig wie eine typische Unix-Konfigurationsdatei aussieht, und Sie editieren die Datei, um mit Debconf zu kommunizieren. Der Autor von Debconf zieht es vor, nicht die Umstände zu kommentieren, die dazu geführt haben, dass diese Benutzerschnittstelle geschrieben wurde.
- web
Behalten Sie im Kopf, dass diese Benutzerschnittstelle nicht sehr sicher ist. Jeder, der auf den zu konfigurierenden Rechner Zugriff hat, kann derzeit auf den den Web-Server zugreifen und Dinge konfigurieren, während diese Schnittstelle läuft. Also ist dies mehr eine Konzeptstudie als alles andere.
Sie können die standardmäßige
Benutzerschnittstelle, die Debconf benutzt, ändern, indem Sie Debconf
erneut konfigurieren. Falls Sie andererseits die Benutzerschnittstelle nur
für kurze Zeit ändern wollen, können Sie die
Umgebungsvariable DEBIAN_FRONTEND auf den Namen der zu benutzenden
Benutzerschnittstelle setzen. Zum Beispiel:
DEBIAN_FRONTEND=readline apt-get install slrn
Die Befehle dpkg-reconfigure(8) und dpkg-preconfigure(8) lassen sich auch --frontend übergeben, gefolgt von der Benutzerschnittstelle, die Sie benutzen sollen.
Beachten Sie, dass nicht alle Benutzerschnittstellen unter allen Umständen funktionieren. Falls eine Benutzerschnittstelle aus irgendwelchen Gründen scheitert, gibt Debconf eine Meldung aus, warum, und greift auf die ähnlichste Benutzerschnittstelle zurück.
Prioritäten¶
Ein weitere nette Funktionalität von Debconf ist, dass die Fragen, die es Ihnen stellt, priorisiert sind. Falls Sie nicht mit jeder kleinen Sache belästigt werden wollen, können Sie Debconf so einstellen, dass es Ihnen nur die wichtigsten Fragen stellt. Falls Sie auf der anderen Seite ein Kontroll-Freak sind, können Sie es Ihnen alle Fragen zeigen lassen. Jede Frage hat eine Priorität. In nach Wichtigkeit aufsteigender Folge:
- niedrig (low)
- Sehr triviale Fragen, die Voreinstellungen haben, die in den allermeisten Fällen funktionieren.
- medium
- Normale Fragen, die vernünftige Voreinstellungen haben.
- hoch (high)
- Fragen, die keine vernünftige Voreinstellung haben.
- kritisch (critical)
- Fragen, die Sie wirklich, wirklich sehen müssen (ansonsten ...).
Nur Fragen mit einer Priorität gleich oder größer der Priorität, die Sie wählen, werden Ihnen gezeigt. Sie können den Prioritätswert setzen, indem Sie Debconf erneut konfigurieren, oder temporär, indem Sie --priority gefolgt von dem Wert an die Befehle dpkg-reconfigure(8) und dpkg-preconfigure(8) übergeben oder durch Setzen der Umgebungsvariablen DEBIAN_PRIORITY.
Datenbanken-Backend¶
Debconf benutzt ein ziemlich flexibles und potenziell kompliziertes Datenbanken-Backend, um solche Daten wie die Antworten auf Fragen zu speichern. Die Datei /etc/debconf.conf wird benutzt, um diese Datenbank zu konfigurieren. Falls Sie etwas Kompliziertes aufsetzen müssen, etwa Debconf eine entfernte Datenbank für Voreinstellungen mit lokalen Aufhebungen lesen zu lassen, schauen Sie sich die Handbuchseite debconf.conf(5) für alle Details an. Generell befindet sich das Datenbanken-Backend unter /var/cache/debconf/.
Unbeaufsichtigte Paket-Installation¶
Falls Sie viele Maschinen verwalten müssen, finden Sie sich manchmal in der Situation, eine unbeaufsichtigte Installation oder Aktualisierung von Paketen auf vielen Systemen vornehmen zu müssen, bei der die vorgegebenen Antworten auf manche Konfigurationsfragen nicht akzeptabel sind. Es gibt viele Wege, dies zu erreichen; alle schließen ein, eine Datenbank aufzusetzen und sie Debconf benutzen lassen, um die Antworten zu bekommen, die Sie wollen.
Sie sollten vor diesem Abschnitt wirklich debconf.conf(5) lesen, weil Sie verstehen müssen, wie Debconfs Datenbanken funktionieren.
Der einfachste Weg, um die Datenbank aufzusetzen, ist es, die Pakete auf einer Maschine zu installieren und ihre Fragen wie üblich zu beantworten. Oder Sie könnten einfach dpkg-preconfigure(8) benutzen, um eine Reihe von Paketen zu konfigurieren, ohne sie tatsächlich zu installieren. Oder Sie mögen sich sogar dazu entscheiden, eine Klartext-Debconf-Datenbank von Hand zu schreiben, oder soetwas.
Sobald Sie die Datenbank haben, müssen Sie herausfinden, wie Sie die Systeme in der Ferne dazu bekommen, sie zu benutzen. Dies hängt selbstverständlich von der Konfiguration dieser Systeme ab und davon, für die Benutzung welcher Datenbanken-Typen sie aufgesetzt sind.
Falls Sie die LDAP-Debconf-Datenbank benutzen, kann ein gesamtes Netzwerk von Debian-Maschinen einige oder alle Fragen zur Paket-Installation automatisch von einem einzelnen LDAP-Server beantwortet bekommen.
Aber vielleicht benutzen Sie etwas, das ein wenig leichter aufzusetzen ist, wie, sagen wir, die standardmäßige Debconf-Datenbanken-Konfiguration oder Sie wollen einfach nicht, dass Ihre System in der Ferne LDAP die ganze Zeit benutzen. In diesem Falle ist der beste Ansatz, die Systeme in der Ferne temporär so zu konfigurieren, dass sie Ihre Datenbank unter ihre eigenen existierenden Datenbanken stapeln, so dass sie vorgegebene Werte aus ihr herausziehen können. Debconf bietet zwei Umgebungvariablen, DEBCONF_DB_FALLBACK und DEBCONF_DB_OVERRIDE, um es einfach zu machen, dies im Vorbeigehen zu tun. Hier ist eine Beispielanwendung:
cat /var/cache/debconf/config.dat | \
ssh root@target "DEBIAN_FRONTEND=noninteractive \
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
Dies lässt das Debconf auf dem Rechner in der Ferne die Daten, die über die SSH-Verbindung transferiert werden, einlesen und als eine Debconf-Datenbank im Klartextformat interpretieren. Dann benutzt es diese Datenbank als Rückgriffsdatenbank -- eine nur-lesende Datenbank, die nach Antworten zu Fragen abgefragt wird, falls die Haupt-Debconf-Datenbank des Systems keine Antworten bietet.
Noch ein Weg, die Umgebungsvariable DEBCONF_DB_FALLBACK zu benutzen:
ssh -R 389:ldap:389 root@target \
"DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"
Hier wird SSH benutzt, um eine getunnelte LDAP-Verbindung aufzusetzen und Debconf auszuführen. Debconf soll den LDAP-Server als Rückgriffs-Datenbank benutzen. Beachten Sie die Benutzung von »{host:localhost}«, um zu konfigurieren, wie Debconf auf die LDAP-Datenbank zugreift, indem das Feld »host« mit dem Wert »localhost« geliefert wird.
Noch eine Methode:
scp config.dat root@target:
ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get
upgrade
Hier kopieren Sie die Datenbank mit scp hinüber, und dann öffnen Sie SSH und lassen Debconf die hinüber-kopierte Datei benutzen. Dies illustriert einen Abkürzung, die Sie bei den Parametern für DEBCONF_DB_FALLBACK benutzen können -- falls der Feldname ausgelassen wird, wird »filename« angenommen.
Es gibt nur ein Problem mit diesen Anwendungen des Parameters DEBCONF_DB_FALLBACK: Während die Rückgriffsdatenbank Antworten auf Fragen liefern kann, die die anderen Datenbanken noch nicht gesehen haben, wird sie nur als Rückgriff abgefragt; nach den anderen Datenbanken. Falls Sie stattdessen auf dem entfernten Rechner einen bestehenden Wert temporär außer Kraft setzen müssen, sollten Sie stattdessen die Variable DEBCONF_DB_OVERRIDE benutzen. Wie DEBCONF_DB_FALLBACK setzt sie eine temporäre Datenbank auf, aber diese Datenbank wird vor allen anderen befragt, und kann benutzt werden, um bestehende Werte außer Kraft zu setzen.
Entwickeln für Debconf¶
Paket-Entwickler und andere, die Pakete entwickeln wollen, die Debconf benutzen, sollten debconf-devel(7) lesen.
Kurz gesagt kommuniziert Debconf mit Maintainer-Skripten oder anderen Programmen über die Standardein- und -ausgabe, unter Benutzung einer einfachen Befehlssprache ähnlich denen, wie sie von gängigen Internet-Protokollen wie SMTP benutzt werden. Programme benutzen dieses Protokoll, um Debconf zu bitten, Fragen an den Benutzer zu stellen und die Antworten des Benutzers einzuholen. Die Fragen selbst sind in einer eigenen Datei, »Vorlagendatei« genannt, definiert, die ein Format ähnlich einer Debian-Control-Datei hat.
Debian-Pakete, die Debconf benutzen, liefern typischerweise eine Vorlagendatei »templates« und ein Skript »config« (welches ausgeführt wird, um das Paket vorzukonfigurieren) in dem Abschnitt für die Kontroll-Metadaten des Pakets aus.
UMGEBUNG¶
- DEBIAN_FRONTEND
- Wird benutzt, um temporär die Benutzerschnittstelle zu ändern, die Debconf benutzt. Siehe oben.
- DEBCONF_PRIORITY
- Wird benutzt, um temporär die Schwell-Priorität der von Debconf angezeigten Fragen zu ändern. Siehe oben.
- DEBCONF_DEBUG
- DEBCONF_NOWARNINGS
- Setzen Sie dies auf »yes«, um einige Warnungen zu deaktivieren, die Debconf anzeigen könnte. Unterdrückt keine fatalen Fehler.
- DEBCONF_TERSE
- Setzen Sie dies auf »yes«, um den knappen Modus zu aktivieren, in dem Debconfs Benutzerschnittstellen den Wortreichtum so weit wie möglich einschränken.
- DEBCONF_DB_FALLBACK
- Stapel eine Datenbank nach den normalerweise benutzten Datenbanken, so dass sie als ein Rückgriff benutzt wird, um Konfigurationsinformationen zu beziehen. Siehe oben »Unbeaufsichtigte Paket-Installation«. Falls der Wert der Variablen ein Name einer existierenden Datenbank in debconf.conf ist wird diese Datenbank benutzt. Ansonsten kann die Umgebungsvariable benutzt werden, um eine Datenbank im Vorbeigehen (»on the fly«) zu konfigurieren, indem der Typ der Datenbank genannt und optional Feld:Wert-Einstellungen in geschwungenen Klammern nach dem Typ übergeben werden. Leerzeichen werden benutzt, um Felder zu trennen, also können Sie keinen Feldwert angeben, der Leerrzeichen enthält.
Dieses benutzt also die Datenbank fallbackdb in debconf.conf:
DEBCONF_DB_FALLBACK=fallbackdb
Während dies eine neue Datenbank vom Typ
»File« aufsetzt und ihr den zu benutzenden Dateinamen und die
Anweisung, das Erstellen von Sicherheitskopien zu deaktivieren,
übergibt:
DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}
Und als Kurzform setzt dies eine Datenbank vom Typ
»File« mit einem Dateinamen auf:
DEBCONF_DB_FALLBACK=File{/root/config.dat}
Beachten Sie, dass eine Rückgriffsdatenbank, falls sie im Vorbeigehen aufgesetzt wird, standardmäßig nur-lesend ist.
- DEBCONF_DB_OVERRIDE
- Stapelt eine Datenbank vor die normalerweise benutzten Datenbanken, so dass sie Werte aus ihnen überstimmen kann. Der Wert dieser Variablen funktioniert auf dieselbe Weise wie der Wert von DEBCONF_DB_FALLBACK.
- DEBCONF_DB_REPLACE
- Benutze eine gegebene Datenbank anstelle der normalerweise benutzten Datenbanken. Dies kann nützlich sein, um mit einer separaten Datenbank zu testen, ohne dafür eine eigene debconf.conf zu erstellen, oder um das Sperren der normalen Datenbanken zu vermeiden.
- DEBCONF_SYSTEMRC
- Falls diese Umgebungsvariable gesetzt ist, ignoriert Debconf die Datei ~/.debconfrc des Benutzer, und benutzt stattdessen die systemweite debconf.conf. Falls diese auf den Namen einer regulären Datei gesetzt ist, zieht Debconf diese Datei der systemweiten Konfigurationsdatei vor.
- DEBCONF_FORCE_DIALOG
- Falls diese Umgebungsvariable gesetzt ist, bevorzugt Debconf dialog gegenüber whiptail für die Benutzerschnittstelle Dialog.
- DEBCONF_FORCE_XDIALOG
- Falls diese Umgebungsvariable gesetzt ist, bevorzugt Debconf Xdialog vor whiptail für die Benutzerschnittstelle Dialog.
- DEBCONF_NONINTERACTIVE_SEEN
- Setzen Sie diese auf »true«, damit die Markierung gesehen (»seen«) für Fragen, die in der nicht-interaktiven (»noninteractive«) Schnittstelle gestellt werden, gesetzt wird.
FEHLER¶
möglicherweise einige, es gibt hier eine Menge an Kode.
Falls Sie einen Fehlerbericht einreichen (auf Englisch!), stellen Sie sicher, dass Sie die folgenden Informationen einbeziehen:
- *
- Die Debconf-Benutzerschnittstelle, die Sie benutzten, als der Fehler auftrat.
- *
- Was Sie taten, um das Problem auszulösen.
- *
- Den vollständigen Text jeder Fehlermeldung. Falls Sie den Fehler reproduzieren können, tun Sie dies mit auf gesetztem und exportiertem DEBCONF_DEBUG='.*'.Dies beschleunigt die Fehlersuche sehr.
ÜBERSETZUNG¶
Die deutsche Übersetzung wurde 2008 von Florian Rehnisch <eixman@gmx.de> und 2008-2009, 2012 von Helge Kreutzmann <debian@helgefjell.de> angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer für die Kopierbedingungen. Es gibt KEINE HAFTUNG.
SIEHE AUCH¶
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),
AUTOR¶
Joey Hess <joeyh@debian.org>