[[Vorlage(Getestet, general)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Paketquellen_freischalten: Hinzufügen von Paketquellen] [:Pakete_installieren: Installation von Paketen] }}} [[Inhaltsverzeichnis(1)]] 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Tabelle <-2 rowclass="titel"> 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: {{{#!vorlage Befehl 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. {{{#!vorlage 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. {{{#!vorlage Tabelle <-3 rowclass="titel"> 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. {{{#!vorlage Befehl echo "set BESITZER/VORLAGE WERT" | sudo debconf-communicate }}} {{{#!vorlage 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: {{{#!vorlage Befehl 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. {{{#!vorlage Paketinstallation configure-debian, universe [3] }}} == 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. {{{#!vorlage Paketinstallation gkdebconf, universe [3] }}} = Zuordnung von Dateien zu Paketen = Der folgende Befehl in einem Terminal [1] zeigt an, zu welchem Paket eine Datei gehört: {{{#!vorlage Befehl 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:] {Übersicht} Übersichtsartikel # tag: Paketverwaltung, Shell