Automatisierte Ubuntu Installation Teil 2

Nachdem ich nun eine erste automatisierte Ubuntu Minimal Installation habe, möchte ich nun darauf aufbauend diese evt. noch etwas verfeinern und vor allen Dingen dann auch weitere Programme installieren, natürlich genauso automatisiert, so dass der Anwender jeweils nur ein Skript ausführen muss oder dieses sogar gleich nach der Minimalinstallation ausgeführt wird.

debconf

Zeit also, sich etwas genauer mit debconf, dem zentralen System zur Verwaltung von Debian/Ubuntu Paketen, zu beschäftigen. Schon im ersten Teil meiner kleinen Anleitung wurde erklärt, dass bei der Installation von Programmen Fragen gestellt werden zur Konfiguration, deren Antworten man dann in der Voreinstellung vornehmen kann, so dass die Installation der Pakete dann ohne diese Konfigurationsfragen erfolgt. Nun möchte man natürlich wissen welche Fragen es überhaupt gibt und was man genau da einstellen kann. Dazu installiert man zuerst mal das Paket debconf-utils, das in dem installierten Minimalsystem noch nicht dabei ist.
sudo apt-get -y install debconf-utils
Eine Liste mit den Voreinstellungsfragen während der Installation und zu den installierten Programmen erhält man mit den folgenden 2 Befehlen:
debconf-get-selections --installer > config.cfg
debconf-get-selections >> config.cfg
Diese Liste kann man nutzen, um evt. noch weitere Details an dem installierten Minimalsystem zu ändern. Möchte man ein installiertes Paket später noch mal interaktiv neu konfigurieren, benutzt man folgenden Befehl:
dpkg-reconfigure [Optionen] Pakete
Nun möchte man ja auch neue Pakete installieren und dies natürlich auch automatisiert. Dazu muss man natürlich erst mal wissen, welche debconf Einstellungen die Pakete überhaupt haben. Diese findet man heraus in dem man die Pakete erst mal installiert, z.B. den mysql Server.
sudo apt-get install mysql-server
Bei der Installation wird man dann nach dem Passwort für root gefragt. Welche Einstellungen dafür von debconf verwendet werden und ob es noch andere Einstellung gibt, die man konfigurieren kann, erfährt man dann mit dem Befehl:
sudo debconf-show mysql-server-5.1
Man bekommt folgende Ausgabe:
* mysql-server/root_password_again: (password omitted)
* mysql-server/root_password: (password omitted)
  mysql-server-5.1/start_on_boot: true
  mysql-server-5.1/postrm_remove_databases: false
  mysql-server/error_setting_password:
  mysql-server-5.1/nis_warning:
  mysql-server-5.1/really_downgrade: false
  mysql-server/password_mismatch:
  mysql-server/no_upgrade_when_using_ndb:

Fragen, die bereits gestellt wurden, sind am Anfang der Zeile mit einem * gekennzeichnet. Weiß man nicht mehr, welche genaue Version eines Paketes installiert wurde, bekommt man eine Liste mit allen Paketen, die man konfigurieren kann mit:

sudo debconf-show --listowners
Die Infos der Ausgabe von debconf-show kann man nun nutzen, um eine Voreinstellungsdatei zu erstellen und mysql-server dann automatisiert ohne Abfragen zu installieren:
echo "mysql-server-5.1 mysql-server/root_password password $MYSQL_PWD" \
> mysql.preseed
echo "mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PWD" \
>> mysql.preseed
echo "mysql-server-5.1 mysql-server-5.1/start_on_boot boolean true" \
>> mysql.preseed
sudo debconf-set-selections mysql.preseed
sudo apt-get -y install mysql-server
Nach diesem Prinzip kann man für alle Pakete verfahren, die normalerweise interaktive Abfragen haben, um diese dann später in einer Voreinstellungsdatei vor der Installation zu konfigurieren. So kann man sich dann bequem Shell Scripte schreiben, welche die weitere Software wieder ganz ohne Benutzereingaben installiert.

Tags:,