debconf
             ist ein zentrales System zur Verwaltung von Debian Paketen. Es gibt auch
            ein selten verwendetes Programm namens debconf, dies soll jedoch an dieser Stelle nicht weiter
            betrachtet werden (siehe hierzu 
                debconf
            
            ). debconf bietet eine einheitliche Schnittstelle zur
            Konfiguration von Debian Paketen, der Benutzer kann dabei zwischen verschiedenen
            Frontends wählen. debconf kann vor der Installation von Paketen die
            notwendigen Parameter erfragen, so dass die weitere Installation einer großen Anzahl von
            Paketen unbeaufsichtigt erfolgen kann. Hierzu ist es notwendig, dass APT in der Version
            0.5 oder höher installiert ist, weiterhin wird das Paket apt-utils benötigt. 
 Sollen Pakete nicht vor der Installation konfiguriert werden, so kann dies in der
            Datei /etc/apt/apt.conf.d/70debconf angepasst werden. Wie dort
            beschrieben, ist einfach eine Zeile mit einem Kommentarzeichen zu versehen. Ein
            einzelnes Paket kann vor der Installation gezielt vorkonfiguriert werden, hierzu dient
            das Kommando dpkg-preconfigure.  Dieses findet sich im Paket apt-utils. 
        
 Ist nun ein Paket installiert und wurden alle debconf-Fragen während der Installation beantwortet, so
            kann es nach einiger Zeit wünschenswert sein, Anpassungen an der Konfiguration
            vorzunehmen. Ein einfaches Neuinstallieren des Pakets führt dabei nicht zum Erfolg, da
            die Antworten in der debconf-Datenbank gespeichert wurden. Bei einer
            neu Installation des Pakets versucht das System zunächst, diese Antworten in der
            Datenbank zu finden. Ist dies erfolgreich, so werden keine Fragen zur Konfiguration
            gestellt. Um nun ein Paket, beispielsweise debconf selbst, neu zu konfigurieren, kann das Kommando dpkg-reconfigure eingesetzt werden. 
dpkg-reconfigure debconf
 Bei diesem Vorgang werden alle Fragen erneut angezeigt, die auch ursprünglich bei der
            ersten Installation von debconf gestellt wurden. Dies muss natürlich mit
            Administratorrechten ausgeführt werden. 
                debconf kann unterschiedliche Frontends zur
                Konfiguration von Paketen verwenden, diese können vom Benutzer ausgewählt werden.
                Folgende Frontends stehen zur Auswahl: 
debconf-Frontends
 Das standardmäßig verwendete Frontend auf Basis von whiptail oder dialog. Eine einfache grafische
                            Oberfläche auf Textbasis. 
Einfache, rein textbasierte Oberfläche. Es wird eine Frage gestellt, und es müssen Werte eingegeben werden. Sehr gut geeignet, um remote auf einem System zu arbeiten.
Dies ist eigentlich gar kein Frontend, denn es werden keinerlei Fragen angezeigt. Alle Werte werden mit den Vorgabewerten aus dem Paket belegt. Es werden allerdings E-Mails an den Administrator gesendet, mit dem Hinweis, dass Pakete konfiguriert wurden bzw. dass noch Einstellungen vorzunehmen sind. Dies ist das beste Frontend, um automatische Installationen durchzuführen.
 Ein modernes Frontend auf Basis der GNOME- und GTK-Bibliotheken.
                            Dieses Frontend lässt sich nur sinnvoll verwenden, wenn lokal ein
                            X-Server installiert ist oder wenn eine entsprechende DISPLAY Variable gesetzt wurde, um den
                            Konfigurationsdialog auf einem anderen System anzuzeigen. Ist das
                            Anzeigen dieses Frontends nicht möglich, so wird auf ein einfacheres
                            Frontend zurückgegriffen. 
 Ein modernes Frontend auf Basis der QT-Bibliotheken. Dieses Frontend
                            lässt sich nur sinnvoll verwenden, wenn lokal ein X-Server installiert
                            ist oder wenn eine entsprechende DISPLAY-Variable gesetzt wurde, um den
                            Konfigurationsdialog auf einem anderen System anzuzeigen. Ist das
                            Anzeigen dieses Frontends nicht möglich, so wird auf ein einfacheres
                            Frontend zurückgegriffen. 
 Das Frontend für Unix-Freaks, die alles in einem Texteditor
                            bearbeiten möchten. Hierbei werden nicht die Konfigurationsdateien zu
                            einem Paket aufgerufen, vielmehr können debconf-Parameter in dem Editor verändert
                            werden. 
Dieses Frontend verhält sich wie ein Webserver; alle Einstellungen können über einen beliebigen Browser vorgenommen werden. Dieses Frontend befindet sich noch in der Entwicklung.
 Das von debconf verwendete Frontend kann bei einer
                Rekonfiguration von debconf gesetzt werden. Soll dagegen das Frontend nur
                für eine einzelne Aktion geändert werden, so kann auch die Umgebungsvariable DEBIAN_FRONTEND auf den gewünschten Wert gesetzt
                werden. 
DEBIAN_FRONTEND=readline apt-get install slrn
 Es ist auch möglich, den Kommandos dpkg-reconfigure und dpkg-preconfigure
                
                 die Option --frontend=readline zu übergeben und auf diesem Wege
                das Frontend zu bestimmen. 
 Über die debconf-Prioritäten kann die „Tiefe“ der
                Fragen bestimmt werden. Jede Frage zu einer Konfigurationsoption ist mit einer
                Priorität versehen, über die der Betreuer des Pakets steuern kann, wie wichtig die
                Frage für das Funktionieren des Pakets ist. Wenn es Ihnen nicht so darauf ankommt,
                ein Paket bis ins letzte Detail anzupassen, so kann debconf dazu veranlasst werden, lediglich die
                essenziell wichtigen Fragen zu stellen. 
Die Prioritäten sind dabei (in aufsteigender Priorität):
Prioritäten von debconf
Sehr einfache Fragen, die mit Voreinstellungen belegt sind, die in den meisten Fällen sinnvoll sind.
Normale Fragen mit sinnvollen Vorgaben.
Fragen, die keine Vorgaben haben.
Fragen, die unbedingt beantwortet werden müssen.
 Es werden immer nur Fragen mit einer Priorität angezeigt, die der gewünschten
                Tiefe entspricht, oder die in der Wertigkeit höher liegen. Die Priorität kann
                gesetzt werden, indem debconf neu konfiguriert wird oder indem die Option --priority=medium den Kommandos dpkg-reconfigure und dpkg-preconfigure übergeben wird. Alternativ kann
                auch die Umgebungsvariable DEBIAN_PRIORITY auf die gewünschte Tiefe gesetzt
                werden. 
                debconf benutzt eine sehr flexible Struktur, um die
                Ergebnisse der Fragen in einer Datenbankstruktur abzulegen. In der Datei /etc/debconf.conf wird diese Anbindung an die
                Datenbank konfiguriert. Im Normalfall liegt diese Datenbank in Form von
                ASCII-Dateien auf dem lokalen Dateisystem im Verzeichnis /var/cache/debconf/. In der Konfigurationsdatei
                finden Sie Beispiele, wie eine Datenbank via NFS oder LDAP genutzt werden kann. 
                
                
            
Bei der automatischen, unbeaufsichtigten Installation oder Aktualisierung von vielen Systemen kann es wünschenswert sein, nicht die vorgegebenen Antworten zu nutzen. Vielmehr ist eine individuelle Anpassung, meist von nur sehr wenigen Werten, wünschenswert.
 Es gibt verschiedene Möglichkeiten, um dies zu erreichen. So kann beispielsweise
                eine debconf-Datenbank mit den gewünschten Informationen
                aufgesetzt werden, die bei der Installation verwendet wird. Der einfachste Weg zu
                einer solchen, mit sinnvollen Werten gefüllten Datenbank ist es, auf einem anderen
                System eine komplette Installation mit den entsprechenden Einstellungen
                durchzuführen und dann die Datenbank zu kopieren. Alternativ kann auch dpkg-preconfigure eingesetzt werden, um eine Auswahl
                von Paketen zu konfigurieren, ohne diese zu installieren. Natürlich kann die
                komplette debconf-Datenbank auch mit einem Texteditor der Wahl
                erstellt werden. 
 Ist die Datenbank mit den benötigten Werten vorbereitet, so ist zu überlegen, wie
                die zu installierenden Systeme auf diese Datenbank zugreifen können. Soll ein
                zentraler LDAP-Server verwendet werden, so kann bei der Installation von Paketen auf
                diesen zugegriffen werden, um die dort hinterlegten Werte auszulesen. debconf benutzt die beiden Umgebungsvariablen DEBCONF_DB_FALLBACK und DEBCONF_DB_OVERRIDE, um den Zugriff auf eine andere
                Datenbank zu steuern. Ein Beispiel: 
cat /var/cache/debconf/config.dat | ssh root@target "DEBCONF_FRONTEND=noninteractive DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
 Dieses Kommando benutzt die lokale Datenbank, die via ssh auf das System gebracht wird. Dort wird die
                Datenbank als Fallback ausgelesen, falls lokal keine entsprechenden Antworten
                verfügbar sind. Dabei wird nur in die lokale Datenbank geschrieben; die via ssh nur temporär verwendete Datenbank wird
                ausschließlich gelesen. 
ssh -R 389:ldap:389 root@target "DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"
 In diesem Beispiel wird eine über ssh getunnelte LDAP-Datenbank genutzt. Wieder wird
                diese Datenbank nur als Fallback, also read-only, eingesetzt. 
scp config.dat root@target:
ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get upgrade
 In diesem Beispiel wird zunächst die Datenbank mittels ssh kopiert. Danach wird über ssh ein Update angestoßen, bei dem die zuvor kopierte
                Datenbank benutzt wird. 
 In allen Beispielen wird die zentrale Datenbank als Fallback eingesetzt. Dies
                bedeutet, dass auf diesem Wege Antworten gesetzt werden können, die auf dem
                Zielsystem noch nie aufgetaucht sind, aber diese Werte werden ausschließlich
                genutzt, wenn in anderen Datenbanken keine Informationen gefunden werden: deshalb
                der Name „Fallback“. Um bereits gesetzte Werte zu überschreiben, ist
                die Umgebungsvariable DEBCONF_DB_OVERRIDE einzusetzen. Diese bewirkt
                ebenfalls, dass eine andere debconf-Datenbank abgefragt wird, dies jedoch, bevor
                andere Datenbanken zu Rate gezogen werden. 
 Detaillierte Informationen zur Entwicklung von Debian Paketen, die die debconf-Datenbank nutzen, finden Sie in der Manpage
                zu debconf-devel. Im Wesentlichen kommuniziert debconf mit den Skripten über Standard-In und
                -Output. Es wird dabei ein einfaches, SMTP-ähnliches Protokoll verwendet. Die Fragen
                selbst werden in einem Template abgelegt, das vom Format her einer Debian control-Datei ähnelt. 
 Folgende Umgebungsvariablen können von debconf genutzt werden: 
            
debconf-Umgebungsvariablen
DEBIAN_FRONTEND
                    Wird benutzt, um das Frontend zu bestimmen.
DEBIAN_PRIORITY
                    Setzt die minimale Priorität der zu stellenden Fragen.
DEBCONF_DEBUG
                     Aktiviert Meldungen zur Fehlersuche auf der Standard-Ausgabe. Es kann
                            eine Facility oder ein regulärer Ausdruck (beispielsweise .* für alle Meldungen) angegeben werden.
                            Mögliche Facilities sind: 
user
                                Für den Benutzer interessante Informationen
developer
                                Für Entwickler interessante Informationen
db
                                Informationen zur Datenbank
DEBCONF_NOWARNINGS
                     Deaktiviert Warnungen von debconf. Fehlermeldungen werden weiterhin
                            ausgegeben. 
DEBCONF_TERSE
                     Wird dieser Wert auf YES gesetzt, so gibt debconf so wenige Meldungen wie möglich
                            aus. 
DEBCONF_DB_FALLBACK
                     Setzt eine zusätzliche Datenbank mit geringerer Priorität. Alle
                            anderen Datenbanken (aus /etc/debconf.conf) werden bevorzugt
                            behandelt. Wird eine Fallback-Datenbank über diese Umgebungsvariable
                            gesetzt, so ist diese immer nur les-, aber nicht beschreibbar. 
DEBCONF_DB_OVERRIDE
                    Setzt eine zusätzliche Datenbank mit hoher Priorität. Alle anderen Datenbanken werden erst benutzt, wenn in dieser Datenbank keine brauchbaren Informationen gefunden werden.
DEBCONF_SYSTEMRC
                     Beim Start von debconf wird eine ggf. vorhandene Datei ~/.debconfrc des Benutzers ausgewertet.
                            Dies kann durch Setzen dieser Variablen verhindert werden. 
DEBCONF_FORCE_DIALOG
                     Mit dieser Variablen lässt sich die Verwendung von dialog statt whiptail zur Anzeige des Frontends
                            erzwingen. 
DEBCONF_FORCE_XDIALOG
                     Das Setzen dieser Variablen führt dazu, dass Xdialog statt dialog oder whiptail verwendet wird. 
 Neben dem zentralen System zur Verwaltung von Konfigurationsparametern debconf (siehe 
                    debconf
                
                ) gibt es auch ein Kommandozeilenprogramm gleichen Namens. 
 Das Programm debconf führt ein Programm oder Skript aus, das
                normalerweise  bei der Installation eines Pakets ausgeführt wird. So lassen sich
                Skripte bei der Entwicklung von Paketen testen. Die Syntax lautet: 
debconf [options] command [args]
Optionen
-opackage, --owner=packageHiermit kann bestimmt werden, zu welchem Paket das Skript gehört. So werden beispielsweise Benutzer- und Gruppenrechte korrekt gesetzt.
-ftype, --frontend=type Bestimmt das zu verwendende debconf-Frontend. 
-pvalue, --priority=value Gibt die minimale Priorität der debconf-Fragen an, die noch angezeigt
                            werden  sollen. 
Um nun beispielsweise ein Shell-Skript zu testen, kann folgendes Kommando genutzt werden:
DEBCONF_DEBUG=developer debconf my-shell-prog
Alternativ funktioniert aber auch:
debconf --frontend=readline sh -x my-shell-prog
 Mit debconf-show
                 lassen sich gezielt Informationen zu einzelnen Paketen aus der
                Debconf-Datenbank extrahieren. Die Syntax lautet: 
debconf-show packagename [...] [--db=dbname] debconf-show --listowners [--db=dbname] debconf-show --listdbs
 Am häufigsten wird debconf-show sicher zusammen mit einem Paketnamen
                verwendet, um Informationen zu diesem Paket aus der Datenbank auszulesen. Hier am
                Beispiel Apache gezeigt: 
wasabi:/home/fr# debconf-show apache * apache/server-name: hoshi.homeunix.net * apache/document-root: /var/www * apache/server-port: 80 * apache/enable-suexec: false * apache/init: true * apache/server-admin: webmaster@wasabi
 Fragen, die dem Benutzer bereits gestellt wurden, sind am Anfang der Zeile mit
                einem * gekennzeichnet. 
Optionen
--db=dbname
                    Name der abzufragenden Datenbank.
--listowners
                    Zeigt die „Besitzer“ der Fragen in der Datenbank an. Ein Besitzer entspricht immer einem Paketnamen.
--listdbs
                    Zeigt alle verfügbaren Datenbanken an.
                
                debconf-get-selections liest die gespeicherten
                Informationen aus der Debconf-Datenbank und schreibt diese auf die Standard-Ausgabe.
                Die Syntax für diesen Befehl lautet: 
debconf-get-selections [--installer]
 Das Ausgabeformat kann direkt wieder vom Kommando debconf-set-selections
                 eingelesen werden. Soll dies auf einem anderen System geschehen, so ist
                die Ausgabe in eine Datei zu schreiben und diese auf das zweite System zu
                transferieren. Dieses Prinzip wird auch vom Debian Installer genutzt, um eine
                automatische Installation zu erlauben.  
 Informationen, die während der Installation des Systems gesetzt werden, sind in
                einer getrennten Datenbank (/var/log/installer/cdebconf) abgelegt. Diese
                können über die einzige Option von debconf-get-selections - --installer - ausgelesen werden. Um alle
                Debconf-Einstellungen eines Systems in eine Datei zu schreiben, sind zwei Kommandos
                notwendig: 
debconf-get-selections --installer > config.cfg debconf-get-selections >> config.cfg
                
                debconf-set-selections setzt oder verändert Werte in
                der Debconf-Datenbank. Zusätzlich werden die so mit Werten vorbelegten Fragen auch
                als "gesehen" markiert, so dass diese Werte nicht während der Installation des
                Systems oder eines Paketes abgefragt werden. Die Syntax für dieses Kommando lautet: 
debconf-set-selections dateiname
 Wie jedes gute Kommandozeilenprogramm liest debconf-set-selections zunächst aus einer Datei. Wird
                kein Dateiname auf der Kommandozeile übergeben, so wird versucht, aus der
                Standard-Eingabe zu lesen. 
Sollen die Informationen von einem System auf ein anderes übertragen werden, so kann folgendes Kommando verwendet werden, ein funktionierendes Netzwerk zwischen beiden Systemen wird vorausgesetzt:
debconf-get-selections | ssh systemname debconf-set-selections
 Das Format der Datei ist recht einfach aufgebaut. Zeilen ohne Inhalt werden
                ignoriert, Zeilen, die mit dem Zeichen # beginnen, sind Kommentare und werden ebenfalls nicht
                ausgewertet. Alle anderen Zeilen werden interpretiert und müssen vier Werte
                enthalten, die jeweils durch Leerzeichen getrennt sind. Der erste Wert ist der
                Paketname, zu dem die Frage gehört. Der zweite Wert ist der Name der Frage. Der
                dritte Wert ist der Typ der Frage, und der vierte Wert ist die Antwort. Hier ein
                einfaches Beispiel: 
# Comment out extension_dir config from /etc/php4/apache/php.ini? php4 php4/update_apache_php_ini boolean true
Optionen
--verbose, -vAusführliche Ausgabe von Informationen
--checkonly, -cPrüft die Eingabedatei auf Formatfehler, speichert keine Informationen in der Datenbank.
©
 1999 - 2025 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.
 1999 - 2025 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.