Zum Inhalt springen

Debconf: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
debconf - Debians Konfiguration-Verwaltungssystem
'''debconf''' - Debians Konfiguration-Verwaltungssystem


=== Beschreibung ===
=== Beschreibung ===
Zeile 26: Zeile 26:
* Dies muss natürlich mit Administratorrechten ausgeführt werden.
* Dies muss natürlich mit Administratorrechten ausgeführt werden.


=== Frontends ===
=== Frontends ===
debconf kann unterschiedliche Frontends zur Konfiguration von Paketen verwenden, diese können vom Benutzer ausgewählt werden.
debconf kann unterschiedliche Frontends zur Konfiguration von Paketen verwenden, diese können vom Benutzer ausgewählt werden.
* Folgende Frontends stehen zur Auswahl:
* Folgende Frontends stehen zur Auswahl:
Zeile 74: Zeile 74:
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.
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.


=== Prioritäten ===
=== Prioritäten ===
Über die debconf-Prioritäten kann die "Tiefe" der Fragen bestimmt werden.
Ü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.
* 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.
Zeile 99: Zeile 99:
* Alternativ kann auch die Umgebungsvariable DEBIAN_PRIORITY auf die gewünschte Tiefe gesetzt werden.
* Alternativ kann auch die Umgebungsvariable DEBIAN_PRIORITY auf die gewünschte Tiefe gesetzt werden.


=== debconf - Backend-Datenbank ===
=== debconf - Backend-Datenbank ===


debconf benutzt eine sehr flexible Struktur, um die Ergebnisse der Fragen in einer Datenbankstruktur abzulegen.
debconf benutzt eine sehr flexible Struktur, um die Ergebnisse der Fragen in einer Datenbankstruktur abzulegen.
Zeile 106: Zeile 106:
* In der Konfigurationsdatei finden Sie Beispiele, wie eine Datenbank via NFS oder LDAP genutzt werden kann.
* In der Konfigurationsdatei finden Sie Beispiele, wie eine Datenbank via NFS oder LDAP genutzt werden kann.


=== debconf im Backup ===
=== debconf im Backup ===


Bei der Planung eines Backups für das neue System sollte auch das Verzeichnis /var/cache/debconf/ gesichert werden.
Bei der Planung eines Backups für das neue System sollte auch das Verzeichnis /var/cache/debconf/ gesichert werden.
* Obwohl im Verzeichnis /var/cache/ lediglich Daten liegen, die laufend verändert werden, so erspart das Sichern dieses Verzeichnisses die erneuten Fragen bei der Neuinstallation des Systems.
* Obwohl im Verzeichnis /var/cache/ lediglich Daten liegen, die laufend verändert werden, so erspart das Sichern dieses Verzeichnisses die erneuten Fragen bei der Neuinstallation des Systems.


=== Unattended Installation ===
=== Unattended Installation ===


Bei der automatischen, unbeaufsichtigten Installation oder Aktualisierung von vielen Systemen kann es wünschenswert sein, nicht die vorgegebenen Antworten zu nutzen.
Bei der automatischen, unbeaufsichtigten Installation oder Aktualisierung von vielen Systemen kann es wünschenswert sein, nicht die vorgegebenen Antworten zu nutzen.
Zeile 125: Zeile 125:
* 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.
* 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.


=== Beispiel ===
=== Beispiel ===


  # cat /var/cache/debconf/config.dat | \
  # cat /var/cache/debconf/config.dat | \
      ssh root@target "DEBCONF_FRONTEND=noninteractive \
ssh root@target "DEBCONF_FRONTEND=noninteractive \
      DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"


Dieses Kommando benutzt die lokale Datenbank, die via ssh auf das System gebracht wird.
Dieses Kommando benutzt die lokale Datenbank, die via ssh auf das System gebracht wird.
Zeile 136: Zeile 136:


  # ssh -R 389:ldap:389 root@target \
  # ssh -R 389:ldap:389 root@target \
            "DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"
"DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"


In diesem Beispiel wird eine über ssh getunnelte LDAP-Datenbank genutzt.
In diesem Beispiel wird eine über ssh getunnelte LDAP-Datenbank genutzt.
Zeile 152: Zeile 152:
* Diese bewirkt ebenfalls, dass eine andere debconf-Datenbank abgefragt wird, dies jedoch, bevor andere Datenbanken zu Rate gezogen werden.
* Diese bewirkt ebenfalls, dass eine andere debconf-Datenbank abgefragt wird, dies jedoch, bevor andere Datenbanken zu Rate gezogen werden.


=== Paketentwicklung für debconf ===
=== Paketentwicklung für debconf ===


Detaillierte Informationen zur Entwicklung von Debian Paketen, die die debconf-Datenbank nutzen, finden Sie in der Manpage zu debconf-devel.
Detaillierte Informationen zur Entwicklung von Debian Paketen, die die debconf-Datenbank nutzen, finden Sie in der Manpage zu debconf-devel.
Zeile 159: Zeile 159:
* Die Fragen selbst werden in einem Template abgelegt, das vom Format her einer Debian control-Datei ähnelt.
* Die Fragen selbst werden in einem Template abgelegt, das vom Format her einer Debian control-Datei ähnelt.


=== debconf-Umgebungsvariablen ===
=== debconf-Umgebungsvariablen ===


Folgende Umgebungsvariablen können von debconf genutzt werden:
Folgende Umgebungsvariablen können von debconf genutzt werden:
Zeile 165: Zeile 165:
{|| class="wikitable options big"
{|| class="wikitable options big"
|-
|-
|| DEBIAN_FRONTEND  
|| DEBIAN_FRONTEND
|| Wird benutzt, um das Frontend zu bestimmen.
|| Wird benutzt, um das Frontend zu bestimmen.
|-
|-
|| DEBIAN_PRIORITY  
|| DEBIAN_PRIORITY
|| Setzt die minimale Priorität der zu stellenden Fragen.
|| Setzt die minimale Priorität der zu stellenden Fragen.
|-
|-
|| DEBCONF_DEBUG  
|| DEBCONF_DEBUG
|| Aktiviert Meldungen zur Fehlersuche auf der Standard-Ausgabe.
|| Aktiviert Meldungen zur Fehlersuche auf der Standard-Ausgabe.
* Es kann eine Facility oder ein regulärer Ausdruck (beispielsweise .* für alle Meldungen) angegeben werden.
* 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
* Mögliche Facilities sind: user Für den Benutzer interessante Informationen developer Für Entwickler interessante Informationen db Informationen zur Datenbank
|-
|-
|| DEBCONF_NOWARNINGS  
|| DEBCONF_NOWARNINGS
|| Deaktiviert Warnungen von debconf.
|| Deaktiviert Warnungen von debconf.
* Fehlermeldungen werden weiterhin ausgegeben.
* Fehlermeldungen werden weiterhin ausgegeben.
Zeile 183: Zeile 183:
|| Wird dieser Wert auf YES gesetzt, so gibt debconf so wenige Meldungen wie möglich aus.
|| Wird dieser Wert auf YES gesetzt, so gibt debconf so wenige Meldungen wie möglich aus.
|-
|-
|| DEBCONF_DB_FALLBACK  
|| DEBCONF_DB_FALLBACK
|| Setzt eine zusätzliche Datenbank mit geringerer Priorität.
|| Setzt eine zusätzliche Datenbank mit geringerer Priorität.
* Alle anderen Datenbanken (aus /etc/debconf.conf) werden bevorzugt behandelt.
* 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.
* Wird eine Fallback-Datenbank über diese Umgebungsvariable gesetzt, so ist diese immer nur les-, aber nicht beschreibbar.
|-
|-
|| DEBCONF_DB_OVERRIDE  
|| DEBCONF_DB_OVERRIDE
|| Setzt eine zusätzliche Datenbank mit hoher Priorität.
|| Setzt eine zusätzliche Datenbank mit hoher Priorität.
* Alle anderen Datenbanken werden erst benutzt, wenn in dieser Datenbank keine brauchbaren Informationen gefunden werden.
* Alle anderen Datenbanken werden erst benutzt, wenn in dieser Datenbank keine brauchbaren Informationen gefunden werden.
|-
|-
|| DEBCONF_SYSTEMRC  
|| DEBCONF_SYSTEMRC
|| Beim Start von debconf wird eine ggf.
|| Beim Start von debconf wird eine ggf.
* vorhandene Datei ~/.debconfrc des Benutzers ausgewertet.
* vorhandene Datei ~/.debconfrc des Benutzers ausgewertet.
* Dies kann durch Setzen dieser Variablen verhindert werden.
* Dies kann durch Setzen dieser Variablen verhindert werden.
|-
|-
|| DEBCONF_FORCE_DIALOG  
|| DEBCONF_FORCE_DIALOG
|| Mit dieser Variablen lässt sich die Verwendung von dialog statt whiptail zur Anzeige des Frontends erzwingen.
|| Mit dieser Variablen lässt sich die Verwendung von dialog statt whiptail zur Anzeige des Frontends erzwingen.
|-
|-
|| DEBCONF_FORCE_XDIALOG  
|| DEBCONF_FORCE_XDIALOG
|| Das Setzen dieser Variablen führt dazu, dass Xdialog statt dialog oder whiptail verwendet wird.
|| Das Setzen dieser Variablen führt dazu, dass Xdialog statt dialog oder whiptail verwendet wird.
|-
|-
|}
|}


=== debconf (Kommando) ===
=== debconf (Kommando) ===


Neben dem zentralen System zur Verwaltung von Konfigurationsparametern debconf (siehe [../../debiananwenderhandbuch/debconf.html debconf ]) gibt es auch ein Kommandozeilenprogramm gleichen Namens.
Neben dem zentralen System zur Verwaltung von Konfigurationsparametern debconf (siehe [../../debiananwenderhandbuch/debconf.html debconf ]) gibt es auch ein Kommandozeilenprogramm gleichen Namens.
Zeile 215: Zeile 215:
  # debconf [options] command [args]
  # debconf [options] command [args]


=== Optionen ===
=== Optionen ===


{|| class="wikitable big option"
{|| class="wikitable big option"
Zeile 238: Zeile 238:
  # debconf --frontend=readline sh -x my-shell-prog
  # debconf --frontend=readline sh -x my-shell-prog


=== debconf-show ===
=== debconf-show ===


Mit debconf-show lassen sich gezielt Informationen zu einzelnen Paketen aus der Debconf-Datenbank extrahieren.
Mit debconf-show lassen sich gezielt Informationen zu einzelnen Paketen aus der Debconf-Datenbank extrahieren.
Zeile 260: Zeile 260:
Fragen, die dem Benutzer bereits gestellt wurden, sind am Anfang der Zeile mit einem <nowiki>*</nowiki> gekennzeichnet.
Fragen, die dem Benutzer bereits gestellt wurden, sind am Anfang der Zeile mit einem <nowiki>*</nowiki> gekennzeichnet.


=== Optionen ===
=== Optionen ===


{|| class="wikitable big option"
{|| class="wikitable big option"
|-
|-
|| --db=dbname  
|| --db=dbname
|| Name der abzufragenden Datenbank.
|| Name der abzufragenden Datenbank.
|-
|-
|| --listowners  
|| --listowners
|| Zeigt die "Besitzer" der Fragen in der Datenbank an.
|| Zeigt die "Besitzer" der Fragen in der Datenbank an.
* Ein Besitzer entspricht immer einem Paketnamen.
* Ein Besitzer entspricht immer einem Paketnamen.
|-
|-
|| --listdbs  
|| --listdbs
|| Zeigt alle verfügbaren Datenbanken an.
|| Zeigt alle verfügbaren Datenbanken an.
|-
|-
|}
|}


=== debconf-get-selections ===
=== debconf-get-selections ===


debconf-get-selections liest die gespeicherten Informationen aus der Debconf-Datenbank und schreibt diese auf die Standard-Ausgabe.
debconf-get-selections liest die gespeicherten Informationen aus der Debconf-Datenbank und schreibt diese auf die Standard-Ausgabe.
Zeile 294: Zeile 294:
  debconf-get-selections >> config.cfg
  debconf-get-selections >> config.cfg


=== debconf-set-selections ===
=== debconf-set-selections ===


debconf-set-selections setzt oder verändert Werte in der Debconf-Datenbank.
debconf-set-selections setzt oder verändert Werte in der Debconf-Datenbank.
Zeile 318: Zeile 318:


  # <nowiki># Comment out extension_dir config from /etc/php4/apache/php.ini?</nowiki>
  # <nowiki># Comment out extension_dir config from /etc/php4/apache/php.ini?</nowiki>
  php4   php4/update_apache_php_ini     boolean true
  php4 php4/update_apache_php_ini boolean true


=== Optionen ===
=== Optionen ===


{|| class="wikitable big options"
{|| class="wikitable big options"
Zeile 389: Zeile 389:
=== Konfigurierbaren Pakete anzeigen ===
=== Konfigurierbaren Pakete anzeigen ===
Eine Liste der unter debconf registrierten "Besitzer von Konfigurationsdateien" (welche idR. den Paketnamen entsprechen) erhält man im Terminal mit:
Eine Liste der unter debconf registrierten "Besitzer von Konfigurationsdateien" (welche idR. den Paketnamen entsprechen) erhält man im Terminal mit:
 
debconf-show --listowners
debconf-show --listowners


Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Besitzern durchsucht werden, sind Rootrechte vonnöten .
Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Besitzern durchsucht werden, sind Rootrechte vonnöten .
Zeile 396: Zeile 395:
=== Konfiguration abfragen ===
=== Konfiguration abfragen ===
Die Einträge in der debconf-Datenbank lassen sich mit folgendem Befehl abfragen:
Die Einträge in der debconf-Datenbank lassen sich mit folgendem Befehl abfragen:
 
debconf-show PAKET
debconf-show PAKET


Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Einstellungen durchsucht werden, sind Rootrechte vonnöten .
Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Einstellungen durchsucht werden, sind Rootrechte vonnöten .
Zeile 410: Zeile 408:
{| class="wikitable big options"
{| class="wikitable big options"
|-
|-
| colspan="2" | Anzeigefilter manuell vorgeben  
| colspan="2" | Anzeigefilter manuell vorgeben
|-
|-
| | Option + Parameter  
| | Option + Parameter
| | Beschreibung  
| | Beschreibung
|-
|-
| | ''--priority=low''  
| | ''--priority=low''
| | Alle Elemente wie Fragen oder Hinweise werden dem Benutzer vorgelegt.
| | Alle Elemente wie Fragen oder Hinweise werden dem Benutzer vorgelegt.
|-
|-
| | ''--priority=medium''  
| | ''--priority=medium''
| | Normale Elemente, die allgemein vernünftige Vorgaben haben, werden gezeigt.
| | Normale Elemente, die allgemein vernünftige Vorgaben haben, werden gezeigt.
|-
|-
| | ''--priority=high''  
| | ''--priority=high''
| | Elemente, die keine allgemein vernünftigen Vorgaben haben, werden gezeigt.
| | Elemente, die keine allgemein vernünftigen Vorgaben haben, werden gezeigt.
|-
|-
| | ''--priority=critical''  
| | ''--priority=critical''
| | Fast alles wird auf die Vorgabewerte gesetzt, nur Elemente (idR. Fragen), die ohne Intervention des Benutzers die Systemintegrität stören könnten, werden gezeigt.
| | Fast alles wird auf die Vorgabewerte gesetzt, nur Elemente (idR. Fragen), die ohne Intervention des Benutzers die Systemintegrität stören könnten, werden gezeigt.
|-
|-
Zeile 441: Zeile 439:
{| class="wikitable options big"
{| class="wikitable options big"
|-
|-
| colspan="3" | Schnittstellenoberflächen  
| colspan="3" | Schnittstellenoberflächen
|-
|-
| | Typ  
| | Typ
| | Beschreibung  
| | Beschreibung
| | Funktionalität  
| | Funktionalität
|-
|-
| | Dialog
| | Dialog

Aktuelle Version vom 13. September 2025, 15:21 Uhr

debconf - Debians Konfiguration-Verwaltungssystem

Beschreibung

Debconf ist ein Verwaltungssystem für die Konfiguration der Debian-Pakete. Pakete benutzen Debconf, um Fragen bei ihrer Installation zu stellen.

debconf

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. 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 Neuinstallation 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.

Frontends

debconf kann unterschiedliche Frontends zur Konfiguration von Paketen verwenden, diese können vom Benutzer ausgewählt werden.

  • Folgende Frontends stehen zur Auswahl:
dialog Das standardmäßig verwendete Frontend auf Basis von whiptail oder dialog.
  • Eine einfache grafische Oberfläche auf Textbasis.
readline 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.
noninteractive 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.
gnome 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.
kde 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.
editor 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.
web 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.

Prioritäten

Ü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.
Prioritären in aufsteigender Reihenfolge
low Sehr einfache Fragen, die mit Voreinstellungen belegt sind, die in den meisten Fällen sinnvoll sind.
Medium Normale Fragen mit sinnvollen Vorgaben.
High Fragen, die keine Vorgaben haben.
Critical 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 - Backend-Datenbank

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.

debconf im Backup

Bei der Planung eines Backups für das neue System sollte auch das Verzeichnis /var/cache/debconf/ gesichert werden.

  • Obwohl im Verzeichnis /var/cache/ lediglich Daten liegen, die laufend verändert werden, so erspart das Sichern dieses Verzeichnisses die erneuten Fragen bei der Neuinstallation des Systems.

Unattended Installation

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.

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.

Paketentwicklung für debconf

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.

debconf-Umgebungsvariablen

Folgende Umgebungsvariablen können von debconf genutzt werden:

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.

debconf (Kommando)

Neben dem zentralen System zur Verwaltung von Konfigurationsparametern debconf (siehe [../../debiananwenderhandbuch/debconf.html 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=package Hiermit 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

debconf-show

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

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 (siehe [../../debiananwenderhandbuch/installation-etch.html#diautomatischeinstallation Automatische Installation mit dem Debian Installer]).

Informationen, die während der Installation des Systems gesetzt werden, sind in einer getrennten Datenbank (/var/log/debian-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

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, -v Ausführliche Ausgabe von Informationen
--checkonly, -c Prüft die Eingabedatei auf Formatfehler, speichert keine Informationen in der Datenbank.

Installation

Dateien

/etc/apt/apt.conf.d/70debconf
/etc/debconf.conf
/usr/bin/debconf
/usr/bin/debconf-apt-progress
/usr/bin/debconf-communicate
/usr/bin/debconf-copydb
/usr/bin/debconf-escape
/usr/bin/debconf-set-selections
/usr/bin/debconf-show
/usr/sbin/dpkg-preconfigure
/usr/sbin/dpkg-reconfigure
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/debconf
/usr/share/bash-completion/completions/debconf-show
/usr/share/debconf/confmodule
/usr/share/debconf/confmodule.sh
/usr/share/debconf/debconf.conf
/usr/share/debconf/fix_db.pl
/usr/share/debconf/frontend
/var/cache/debconf


TMP

debconf

Manche Pakete sind mit dem debconf-Konfigurationssystem ausgestattet. Dadurch wird eine Intervention des Benutzers möglich, sodass diesem bestimmte Elemente wie beispielsweise Fragen oder Hinweise aus s.g. "Vorlagen" (eng. "templates") präsentiert werden, worauf der Benutzer bestimmte Entscheidungsmöglichkeiten hat.

Dadurch kann beispielsweise direkt die standardmäßige Sprache festgelegt werden, ohne dass der Benutzer diese Änderung selbst in den Konfigurationsdateien vornehmen muss.

Dieses Konfigurationssystem ist nicht auf einzelne Pakete beschränkt, sondern es können auch paketüberfreifende Konfigurationseinstellungen (anhand s.g. "shared templates") vorgenommen werden. Somit kann beispielsweise der aktuelle Displaymanager von einem anderen Loginmanager als Standard abgelöst werden.

Debconf wird dabei über die Maintainerskripte preinst (vor der eigentlichen Installation) und postinst (nach der Installation) bzw. postrm (zum abschließenden Entfernen der Datenbankeinträge nach Deinstallation des Paketes) aufgerufen.

Anhand der durch den Benutzer oder durch die Standardwerte gegebenen Rückgabewerte werden mit diesen Skripten bestimmte Einstellungen am System vorgenommen.

Nachdem ein Benutzer die erste Programminstallation eines mit debconf ausgestatteten Paketes durchgeführt und somit eine gewisse Konfiguration vorgenommen hat, kann das Paket mit dem Befehl dpkg-reconfigure "neu konfiguriert" bzw. "rekonfiguriert" werden.

Das heißt, dass nun eine Benutzerinteraktion wie bei der Erstinstallation stattfindet.

Vorlagen und die Ergebnisse der Elemente werden in die debconf-Datenbanken unter /var/cache/debconf gespeichert.

Ergebnisse und der Status (gesehen oder nicht) von Vorlagen, werden in die Datenbank config.dat geschrieben, die Vorlagen selbst sind unter templates.dat zu finden.

In Ausnahmefällen wird ein Passwort abgefragt, welches dann nur unter Schutz der Rootrechte in passwords.dat gesichert wird.

Konfigurierbaren Pakete anzeigen

Eine Liste der unter debconf registrierten "Besitzer von Konfigurationsdateien" (welche idR. den Paketnamen entsprechen) erhält man im Terminal mit:

debconf-show --listowners

Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Besitzern durchsucht werden, sind Rootrechte vonnöten .

Konfiguration abfragen

Die Einträge in der debconf-Datenbank lassen sich mit folgendem Befehl abfragen:

debconf-show PAKET

Soll zusätzlich noch die Passwortdatenbank nach entsprechenden Einstellungen durchsucht werden, sind Rootrechte vonnöten .

Paket neu konfigurieren

Die Elemente wie Fragen oder Hinweise werden nach ihrer Priorität gefiltert. Die automatische Filterung hängt in erster Linie von der in der Vorlage festgelegten Priorität ab.

Aber auch die von der Paketverwaltung abhängige Schnittstellenoberfläche oder der Status "bereits gesehen" (s.g. "seen") spielen eine Rolle.

Mit der Option --priority können mit dpkg-reconfigure die Vorlagen bereits installierte Pakete mit festgelegter Filterung dargestellt werden:

Anzeigefilter manuell vorgeben
Option + Parameter Beschreibung
--priority=low Alle Elemente wie Fragen oder Hinweise werden dem Benutzer vorgelegt.
--priority=medium Normale Elemente, die allgemein vernünftige Vorgaben haben, werden gezeigt.
--priority=high Elemente, die keine allgemein vernünftigen Vorgaben haben, werden gezeigt.
--priority=critical Fast alles wird auf die Vorgabewerte gesetzt, nur Elemente (idR. Fragen), die ohne Intervention des Benutzers die Systemintegrität stören könnten, werden gezeigt.

Der folgende Befehl konfiguriert zum Beispiel das Paket ssh neu, wobei alle durch das Paket bereitgestellte Vorlagen durchgearbeitet werden:

sudo dpkg-reconfigure --priority=low ssh

Analog gibt es den Befehl dpkg-preconfigure, mit welchem die debconf-Vorlagen, welche vor einer Paketinstallation durchzuführen waren, abgearbeitet werden.

Hinweis
Standardmäßig wird bei dpkg-reconfigure und dpkg-preconfigure (unabhängig von der systemweiten debconf-Priorität) die Priorität "low" verwendet.

Schnittstellenoberflächen

debconf kann auf mehrere Wege mit dem Benutzer kommunizieren. Es werden folgende Schnittstellenoberflächen (s.g. "frontends") unterstützt, wobei diese unterschiedlich funktional sind.

Schnittstellenoberflächen
Typ Beschreibung Funktionalität
Dialog konsolenbasierte Vollbilddarstellung mit dialog vollständige Interaktion möglich
Readline traditionelle, einfache Textschnittstelle um Momentanwert zu sehen, muss libterm-readline-gnu-perl installiert sein
Gnome in Gnomeumgebung eingepasste X-Schnittstelle, ist nicht an GNOME gebunden vollständige Interaktion möglich
Kde in KDE-Umgebung eingepasste X-Schnittstelle, ist nicht an KDE gebunden vollständige Interaktion möglich
Editor Bearbeitung der Konfiguration über standardmäßigen (mit $EDITOR festgelegten) Texteditor vollständige Interaktion möglich
Web Konfiguration über Browser, standardmäßig: https://localhost:8001/ vollständige Interaktion möglich
Nicht-interaktiv Es findet keine Interaktion statt (nicht empfohlen!). keine Interaktion möglich

Je nach benutztem Paketverwaltungsprogramm wird automatisch eine Schnittstellenoberfläche davon ausgewählt. Man kann den Standard aber durch Rekonfigurieren des Paketes debconf festsetzen.

Gezielte Konfiguration

Die Datenbank kann nach folgendem Muster (am Beispiel einer einfachen Auswahl) direkt geändert werden. "BESITZER" ist dabei meist der entsprechende Paketname.

echo "set BESITZER/VORLAGE WERT" | sudo debconf-communicate
Hinweis

Es wird ausschließlich der Datenbankeintrag geändert. Eine Änderung an Konfigurationsdateien wird nicht vorgenommen (dies ist den Maintainerskripten preinst, postinst, ... vorbehalten).

Deswegen ist ein solches Eingreifen nur in Ausnahmefällen sinnvoll.

Durch manuelles Ausführen der entsprechenden Maintainerskripte unter /var/cache/dpkg/info kann aber dpkg-preconfigure und analog dpkg-reconfigure "nachgestellt" werden.

Wie dieser Befehl sinnvoll einsetzbar ist, zeigt folgendes sehr spezielles Beispiel an dem Paket ttf-mscorefonts-installer:

Nach einem "Abwürgen" der Schnittstellenoberfläche mit der Frage ob die EULA akzeptiert werden soll, ist die debconf-Datenbank nicht konsistent.

Nun kann die EULA nachträglich akzeptiert werden, sodass das Paket ohne Fehler reinstalliert werden kann:

echo "set msttcorefonts/accepted-mscorefonts-eula true" | sudo debconf-communicate

Grafische Konfiguration

configure-debian

configure-debian ist ein konsolenbasiertes Rekonfigurationsprogramm, welches die Besitzer von Paketen, in ihren Bereich (s.g. "Section") eingeordnet, darstellt.

sudo apt-get install configure-debian

gkdebconf

gkdebconf ist ein grafisches Rekonfigurationsprogramm, welches ebenfalls die Pakete in die Unterbereiche einteilt, aber auch alle auf einmal darstellen kann. Das Programm besitzt darüber hinaus die Fähigkeit, die Schnittstellenoberfläche frei zu wählen.

sudo apt-get install gkdebconf

Dateien und Paketen

Der folgende Befehl in einem Terminal zeigt an, zu welchem Paket eine Datei gehört:

dpkg -S DATEINAME

Das gefundene Paket kann dann, sofern ein Eintrag in der debconf-Datenbank besteht, mit dpkg-reconfigure neu konfiguriert werden. Existiert kein solcher Eintrag, wird bei Ausführung des Befehls nichts gemacht.