staging.inyokaproject.org

debconf

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Manche Pakete sind mit dem debconf-Konfigurationssystem ausgestattet. Dadurch wird eine Intervention des Benutzers möglich, sodass diesem bestimmte Elemente wie z.B. Fragen oder Hinweise aus "Vorlagen" (eng. "templates") präsentiert werden, worauf der Benutzer bestimmte Entscheidungsmöglichkeiten hat. Dadurch kann z.B. 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übergreifende Konfigurationseinstellungen (anhand "shared templates") vorgenommen werden. Somit kann z.B. 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.

Liste der konfigurierbaren Pakete anzeigen

Eine Liste der unter debconf registrierten "Besitzer von Konfigurationsdateien" (welche in der Regel den Paketnamen entsprechen) erhält man im Terminal [1] mit:

debconf-show --listowners 

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

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 [2].

Ein 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" ("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 (in der Regel 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 ("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 GNOME-Umgebung 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: http://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.

Konfigurationen gezielt vornehmen

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 Konfigurationswerkzeuge

configure-debian

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

  • configure-debian (universe [3])

Befehl zum Installieren der Pakete:

sudo apt-get install configure-debian 

Oder mit apturl installieren, Link: apt://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.

  • gkdebconf (universe [3])

Befehl zum Installieren der Pakete:

sudo apt-get install gkdebconf 

Oder mit apturl installieren, Link: apt://gkdebconf

Zuordnung von Dateien zu Paketen

Der folgende Befehl in einem Terminal [1] 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.

Diese Revision wurde am 23. Februar 2018 17:43 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Paketverwaltung, Shell