DEBCONF(7) | Miscellaneous Information Manual | DEBCONF(7) |
debconf - Debian-Paket-Konfigurationssystem
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).
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.
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.
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:
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.
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.
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:
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.
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/.
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.
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.
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.
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 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.
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),
Joey Hess <joeyh@debian.org>