8.40. Pakete konfigurieren

Im Normalfall liegen die Debianpakete entweder bereits fertig konfiguriert oder mit einer vorbereiteten Konfiguration auf dem Spiegelserver. Dafür zeichnet der Paketmaintainer verantwortlich. Mit verschiedenen Werkzeugen zeigen Sie diese Konfiguration an oder justieren das Paket neu.

8.40.1. Bestehende Konfiguration eines Pakets anzeigen

Die bestehende Konfiguration eines Paketes zeigen Sie mit Hilfe des Kommandos debconf-show Paketname an. debconf-show ist Bestandteil des Pakets debconf [Debian-Paket-debconf] und somit ein essentieller Teil ihrer Installation. Für das Paket tzdata [Debian-Paket-tzdata] sieht das Ergebnis wie folgt aus, sofern Sie auf ihrem System als Zeitzone „Europa/Berlin“ eingestellt haben:

Ausgabe der Konfiguration eines Pakets — hier tzdata

# debconf-show tzdata
  tzdata/Zones/Pacific:
  tzdata/Zones/Arctic:
  tzdata/Zones/Africa:
  tzdata/Zones/Asia:
  tzdata/Zones/US:
* tzdata/Zones/Etc: UTC
  tzdata/Zones/Australia:
* tzdata/Zones/Europe: Berlin
* tzdata/Areas: Europe
  tzdata/Zones/Antarctica:
  tzdata/Zones/SystemV:
  tzdata/Zones/Atlantic:
  tzdata/Zones/Indian:
  tzdata/Zones/America:
#

In obiger Ausgabe erscheint vor jeder Zeile ein * für die Frage zur Konfiguration, die Ihnen als Benutzer bereits bei der Einrichtung des Pakets gestellt wurde. Das kommt beispielsweise dann vor, wenn Sie Debian auf ihrem System installieren — das Paket tzdata ist ein grundlegender Bestandteil des Installationsprozesses. Es legt die verwendete Zeitzone ihres Systems fest (tzdata kürzt time zone data ab).

8.40.2. Konfiguration für alle Pakete auslesen

Die Konfiguration für alle Pakete ist in der Debconf-Datenbank gespeichert. Um diese Konfiguration auszulesen, bedienen Sie sich des Kommandos debconf-get-selections aus dem Paket debconf-utils [Debian-Paket-debconf-utils]. Dieses Paket gehört nicht zur Basisinstallation und ist daher ggf. noch von Ihnen nachzuinstallieren.

Die Ausgabe des Programms erfolgt zeilenweise auf dem Standardausgabekanal (stdout). Sie erhalten zunächst eine Kommentarzeile, die jeweils mit einem # eingeleitet wird. Darauf folgt die Konfigurationsvariable und der Wert, der für die entsprechende Variable derzeit hinterlegt ist. Da die Debconf-Datenbank eine hohe Anzahl Variablen speichert, macht Ihnen ein Pager wie less die seitenweise Betrachtung leichter (siehe nachfolgendes Beispiel).

Gespeicherte Konfiguration in der Debconf-Datenbank. 

# debconf-get-selections | less
# Standardwortliste des Systems:
# Choices: american (American English), deutsch (New German), Manuelle Einrichtu
ng von symbolischen Verweisen
dictionaries-common     dictionaries-common/default-wordlist    select  deutsch
(New German)
# Jetzt die Umstellung auf GRUB 2 abschließen?
grub-pc grub-pc/mixed_legacy_and_grub2  boolean true
...
#

Das Installationsprogramm von Debian verfügt ebenfalls über eine solche Liste. Diese lesen Sie über den Schalter --installer aus. Der Hintergrund dazu ist, dass die Informationen, die während der Installation des Systems gesetzt werden, in einer getrennten Datenbank unter /var/log/installer/cdebconf abgelegt sind.

Auslesen der Konfiguration für den Installer (Ausschnitt). 

# debconf-get-selections --installer
...
# Typ des drahtlosen Netzwerks (WLAN):
# Choices: Infrastruktur-Netzwerk (Managed), Ad-hoc-Netzwerk (Peer-to-Peer)
netcfg  netcfg/wireless_adhoc_managed   select  Infrastructure (Managed) network
# Änderungen auf die Platte schreiben und verschlüsselte Datenträger konfigurieren?
partman-crypto  partman-crypto/confirm  boolean false
...
#

Das Gegenstück zu debconf-get-selections ist debconf-set-selections (Paket debconf [Debian-Paket-debconf]). Dieses Werkzeug kann die Ausgabe von debconf-get-selections direkt verarbeiten und dient Ihnen bspw. zum Einspielen einer vorab gesicherten Paketkonfiguration auf dem gleichen oder einem anderen System. Ausführlicher besprechen wir diesen speziellen Anwendungsfall im Praxisteil unter „Paketkonfiguration sichern“ in Kapitel 34, Paketkonfiguration sichern.

8.40.3. Bestehende Konfiguration anwenden

Die Basiseinstellungen eines Pakets funktionieren im Allgemeinen recht gut, haben aber nicht immer einen Bezug zu ihrem konkreten Einsatzfall. Dieser lässt sich selten vollständig vorhersehen. Daher folgt im Rahmen der Paketinstallation zunächst ein individuelles Feintuning seitens des Administrators. Das betrifft die Voreinstellungen für alle Benutzer. Als Benutzer selbst nehmen Sie individuelle, lokale Korrekturen vor.

Das Anwenden der vorbereiteten Konfiguration umfasst mehrere Schritte — bspw. das Festlegen von Zugangsdaten (administratives Passwort von MySQL) oder das Starten von benötigten Diensten, bspw. Exim als Mail Transfer Agent (MTA). Stellt dpkg dabei fest, dass zwischen der mitgelieferten Konfiguration des neuen Pakets und der bereits bestehenden Konfiguration Unterschiede vorliegen, werden Sie durch das Programm gefragt, welche der beiden Einstellungen zukünftig genutzt werden soll. Das ist sinnvoll und berücksichtigt insbesondere den Fall, dass das Paket bereits bisher auf ihrem System installiert war und von Ihnen händisch auf ihre individuellen Gegebenheiten angepasst wurde. Als Möglichkeiten werden Ihnen hier angeboten:

  • die mitgelieferte Konfiguration des neuen Pakets zu benutzen
  • die bestehende Konfiguration des installierten Pakets beibehalten
  • sich die Unterschiede zwischen beiden anzeigen zu lassen und
  • eine Shell zur individuellen Problembehebung zu öffnen.

Bei letzterem bietet sich Ihnen damit die Möglichkeit, bspw. eine Sicherheitskopie der bestehenden Konfiguration anzulegen, bevor Sie diese verändern. Sollte diese neue Konfiguration nicht ihren Erwartungen oder Bedürfnissen entsprechen, können Sie somit jederzeit auf die Sicherheitskopie zurückgreifen. Bei diesem Vorgehen haben Sie als Administrator die Möglichkeit zu sehen, dass überhaupt Unterschiede bestehen und welche Unterschiede das konkret sind. Sie können Ihre derzeitige Konfiguration beibehalten sowie im Zweifelsfall die Konfiguration auf neue (Standard)Werte zurückzusetzen.

In seltenen Fällen geht dieser Prozess schief, d.h. das Paket wurde zwar entpackt, aber nicht konfiguriert. Hintergrund können nicht sauber aufgelöste Paketabhängigkeiten sein, aber auch Fehler im Paket selbst. Ist ein benötigtes Paket nicht konfiguriert und be- bzw. verhindert damit die Installation und Einrichtung weiterer, davon abhängiger Pakete, teilt Ihnen dpkg das wie folgt mit:

Fehler in der Konfiguration am Beispiel des Pakets mysql-server

...
mysql-server hängt ab von mysql-server-5.5; aber:
  Paket mysql-server-5.5 ist noch nicht konfiguriert.
dpkg: Fehler beim Bearbeiten von mysql-server (--configure):
 Abhängigkeitsprobleme - verbleibt unkonfiguriert
...
Richte docbook-xml ein (4.5-5) ...
update-xmlcatalog: error: entity already registered
dpkg: Fehler beim Bearbeiten von docbook-xml (--configure):
Unterprozess post-installation script gab den Fehlerwert 1 zurück
dpkg: Abhängigkeitsprobleme verhindern Konfiguration von scrollkeeper:
scrollkeeper hängt ab von docbook-xml (>= 4.2-11); aber:
Paket docbook-xml ist noch nicht konfiguriert.
dpkg: Fehler beim Bearbeiten von scrollkeeper (--configure):
 Abhängigkeitsprobleme - lasse es unkonfiguriert
...

Hilfreich ist es in diesem Fall, dass Sie zunächst analysieren, welche Pakete unvollständig installiert sind. Dabei hilft Ihnen der Aufruf dpkg -C, wobei dpkg für letzteres auch die Langform --audit kennt.

Auflistung der unvollständig installierten Pakete mittels dpkg

# dpkg --audit
Für die folgenden Pakete fehlt die MD5-Prüfsummen-Datei in der Datenbank,
sie müssen erneut installiert werden:
 slib                 Portable Scheme library
 vifm                 a ncurses based file manager with vi like keybindings
#

Als nächsten Schritt schieben Sie die Konfiguration des Pakets an. Für ein einzelnes Paket gelingt Ihnen das mit dem Aufruf dpkg --configure Paketname und für mehrere Pakete mit dpkg -a (Langform --pending). Im letztgenannten Fall arbeitet dpkg die Liste der unkonfigurierten Pakete nacheinander ab. Die konkrete Reihenfolge der Abarbeitung legt dpkg eigenständig fest.

Die Konfiguration eines Pakets geschieht in den folgenden Schritten:

  • Die Konfigurationsdateien („Conffiles“) des Pakets werden entpackt.
  • Die bereits bestehenden Konfigurationsdateien („Conffiles“) für das Paket werden gespeichert. Falls dabei etwas schief geht, können diese wiederhergestellt werden.
  • Stellt das Paket ein Maintainer-Skript namens postinst bereit, wird dieses abgearbeitet.

Möchten Sie zu einem späteren Zeitpunkt die Einstellungen zu dem nun installierten und konfigurierten Paket erneut anpassen, benutzen Sie stattdessen das Werkzeug dpkg-reconfigure. Damit durchlaufen Sie die Prozedur erneut. Ausführlicher gehen wir dazu in Abschnitt 8.40.4, „Konfiguration mit dpkg-reconfigure erneut durchführen“ ein.

8.40.4. Konfiguration mit dpkg-reconfigure erneut durchführen

Für diesen Schritt hilft Ihnen das Werkzeug dpkg-reconfigure aus dem Paket debconf [Debian-Paket-debconf] weiter. Es greift dazu auf debconf zurück, welches wiederum eine Datenbank mit den Konfigurationseinträgen ihrer Pakete unter /var/cache/debconf benutzt.

dpkg-reconfigure kennt diese Optionen zum Aufruf:

-f (Langform --frontend)
Üblicherweise benutzt dpkg-reconfigure die nicht-interaktive Schnittstelle auf der Basis von Dialog/Ncurses. Zur weiteren Auswahl stehen Readline (interaktiv), via Gnome oder KDE, mit Hilfe eines Texteditors oder die Eingabezeile (nicht interaktiv) zur Auswahl. In Abbildung 8.29, „Konfiguration des Pakets debconf sehen Sie den Einstellungsdialog für das Paket debconf, welchen Sie mittels dpkg-reconfigure debconf erreichen.

Abbildung 8.29. Konfiguration des Pakets debconf

werkzeuge/paketoperationen/pakete-konfigurieren/debconf.png

--default-priority
verwendet low als Schwellwert für die Fragen, die Ihnen für die Konfiguration des Pakets gestellt werden
--force
erzwingt eine Konfiguration des Pakets, selbst wenn sich dieses in einem inkonsistenten oder defekten Zustand befindet
--no-reload
verhindert das erneute Laden der Vorlagen. Nützlich insbesondere dann, wenn die Vorlage defekt ist
-p (Langform --priority)
setzt den Schwellwert für die Fragen, die Ihnen für die Konfiguration des Pakets gestellt werden
-u (Langform --unseen-only)
zeigt Ihnen die Fragen an, die ihnen noch nicht zur Konfiguration des Pakets gestellt wurden

Mit dem Aufruf dpkg-reconfigure Paketname konfigurieren Sie ein bereits installiertes Paket erneut. Wir zeigen Ihnen das anhand des Pakets tzdata [Debian-Paket-tzdata], welches die Einstellungen für die Zeitzone steuert. Nach dem Aufruf zwei Dialogfenster — der Kontinent und die Stadt oder Region, die zu ihrer Zeitzone passt (siehe Abbildung 8.30, „Konfiguration des Pakets tzdata und regionale Auswahl“). Danach gibt ihnen dpkg-reconfigure die aktuelle Zeitzone und die Uhrzeit aus — jeweils in lokaler Zeit (hier Mitteleuropäische Sommerzeit, kurz CEST) und in Universalzeit (Universal Time, kurz UTC).

Abbildung 8.30. Konfiguration des Pakets tzdata und regionale Auswahl

werkzeuge/paketoperationen/pakete-konfigurieren/tzdata.png

Einstellung der Zeitzone. 

# dpkg-reconfigure tzdata

Current default time zone: 'Europe/Berlin'
Local time is now:      Sat Aug  6 00:46:08 CEST 2016.
Universal Time is now:  Fri Aug  5 22:46:08 UTC 2016.

#