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.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
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.
Links¶
dpkg - Debian Paketmanager
Paketverwaltung Übersichtsartikel