GISLive Build
allgemeine Informationen
Die GISLive-Skripte setzen auf dem Debian-Live-Projekt auf. Damit ist es möglich, automatisiert (also völlig ohne Interaktion) ein auf Debian-Linux basierendes LiveSystem zu erstellen. Ablaufsteuerung und Anpassung des zu erstellenden Systems wird über Shell-Skripte realisiert.
technische Voraussetzungen
Hardware
Der Bauvorgang ist sehr Ressourcen-hungrig. 2 GByte RAM und 20 GByte Festplattenplatz stellen schätzungsweise die Mindestanforderung an den "Build-Server" dar. Allgemein kann man sagen, dass mehr RAM, höhere Prozessorleistung und schneller Plattenzugriff usw. dafür sorgen können, dass die Bauzeit sich deutlich verkürzt (Spanne: mehr als 1h bis zu unter 30min). Selbst mehrere Prozessoren können insbesondere für die Erstellung des speziellen Live-Dateisystems parallel genutzt werden.
Software
Es ist sehr zu empfehlen, dass das Betriebssystem für den Bauvorgang exakt dem Zielsystem auf DVD entspricht (auch wenn das wohl nicht zwingend so sein muss). Zur Zeit wäre dies ein Debian Lenny (32bit, 2.6.26-i686 Kernel). Zusätzlich zur Debian-Standardinstallation sollten u.a. folgende Pakete installiert sein:
subversion
- zum Aus- und Einchecken der GISLive-Skriptelive-helper
- Basisskriptesyslinux
- für die Erstellung eines Angepassten Bootloaderscurl
- für interne Prüfroutinensudo
- Sehr häufig während des Bauvorgangs benötigt man Root-Rechte. Dazu rufen die Skripte an mancher Stelle die Befehle mit einem vorangestellten sudo auf. Der Nutzer, der die Bauskripte startet, sollte also über einen entsprechenden Eintrag in /etc/sudoers verfügen.
vim
... oder einen anderen guten Editor
Sehr zu empfehlen ist die Verwendung einer eigenen virtuellen Maschine für den Bauvorgang.
Bau-Skripte und Binärdaten
Die für den Bau benötigten Dateien sind in zwei große Gruppen aufgeteilt:
- die eigentlichen Bauskripte, inklusive einem Großteil der Konfigurationsdateien und der graphischen Elemente
- Binärdaten in Form von Beispiel-Geodaten oder Zusatzprogrammen (= das AF-Paket; af = additional files).
Beide Datenpakete müssen für den Bau vorhanden und eingerichtet sein. Die Skripte liegen in einem passwortgeschützten SVN-Verzeichnis auf dem FOSSGIS-Server (derzeit kann ein Zugang dafür bei Lars beantragt werden). Das AF-Paket liegt ebenfalls in einem geschützten Verzeichnis unter http://www.fossgis.de/gislive/afpkg/ .
Paketquellen, Debian-Repository
Alle zum Bau benötigten Debian-Pakete werden automatisch aus dem eingestellten Repository gezogen. Sehr zu empfehlen ist die Einrichtung eines lokalen Debian-Spiegels, wenngleich dies etwas aufwändig einzurichten ist. Der Geschwindigkeitsvorteil ist enorm, da nicht jedes Paket erst aus dem Internet geladen werden muss. Binärpakete werden zwar nach dem ersten Bauvorgang lokal zwischengespeichert ("gecached"), bei den Quellpaketen funktioniert dies allerdings noch nicht. Ausdrücklich gewarnt werden muss vor dem Einsatz von Werkzeugen, wie z.B. apt-cacher. Die Debian-Live-Skripte haben in der unter Lenny verfügbaren Version noch Probleme damit.
Kurzanleitung
Einrichtung
- Bau-Skripte aus dem SVN ziehen: (bei Problemen bitte an Lars wenden)
# Beispiel fuer aktuelle FOSSGIS-Workshop-DVD svn co http://www.fossgis.de/svn/gislive/branches/se_workshops
- passendes AF-Paket vom FOSSGIS-Server laden und auf dem lokalen Build-Server entpacken:
- Beispiel-Quellenangabe für aktuelle FOSSGIS-Workshop-DVD: http://www.fossgis.de/gislive/afpkg/sews2010_af1.tar.gz
- ins Skriptverzeichnis wechseln
- Konfigurationsskript für lokale Anpassungen kopieren (die lokal veränderte setenv.sh ist danach nicht ins SVN zurückzuschreiben!!):
cp setenv.sh-dist setenv.sh
- Anpassen von setenv.sh (insbes.
GL_BUILD_DIR
undGL_AF_DIR
; Datei ist gut dokumentiert!)- Im
buildDir
wird der Bauvorgang ausgeführt und darin landet auch die finale ISO-Datei. Hier wird der meiste Plattenplatz gebraucht!! - das
afDir
bezeichnet den Ort, an dem das oben erwähnte AF-Paket entpackt wurde - die
mRepo
-Variable sollte auf ein Debian-Repository in eurer Nähe zeigen (oder auf einen lokalen Repository-Spiegel in eurem Netz) - die restlichen Variablen müssen nicht unbedingt verändert werden
- Im
Ist dies geschehen, sollte der Aufruf ./setenv.sh
im Skript-Verzeichnis eigentlich fehlerlos durchlaufen und eine neue Subshell starten, die am veränderte Shellprompt zu erkennen ist:
# Skript-Aufruf: ./setenv.sh # Shell-Prompt im Build-Environment: GISLiveEnv:~$
Das setenv-Skript unterstützt die Einrichtung des Buildservers, indem es einige Prüfroutinen durchführt, die zum Beispiel auf fehlerhafte Verzeichnisverweise oder nicht installierte Pakete hinweisen.
Bauvorgang starten
In der Subshell wird der Bauvorgang wie folgt gestartet:
gl_build [-a|-b|-f]
- für Testversionen kann man -a (AlphaVersion) oder -b (Beta-) angeben
- bei -f (endgültige Finalversion) wird zusätzlich ein Quelltext-Paket gebaut (Achtung! sehr zeitintensiv!)
Paketauswahl
Sollen weitere Pakete aus dem Standardrepository oder aus den zusätzlichen Repositories ins LiveSystem aufgenommen werden, so ist die Datei gl_edition/templates/additional_debpackages der richtige Ort dafür. Um den Überblick nicht zu verlieren, sollte für jeden Workshop dort eine eigene Liste angelegt werden (Kommentare mit "Doppel-Raute"!!). Bsp:
## mein Workshop: qgis qgis-plugin-grass openoffice.org
externe Demo-Daten und Programme hinzufügen
Live-System anpassen
zusätzliches Debian-Repository einbinden
Die aktuellen Versionen (Stand: 1/2010) nutzen für GIS-Pakete standardmäßig das "gfoss.it"-Repository (http://debian.gfoss.it) sowie die selbstgebauten Pakete unseres Vereins-Repositories (http://www.fossgis.de/gislive/debian). Sind zusätzliche Repositories nötig, so können diese in der Datei gl_edition/templates/additional_repositories eingetragen werden (Format: wie in /etc/apt/sources.list üblich).
FAQ
Detailinformationen
GISLive-Environment-Variablen
- cf = gl_common/functions
- ct = gl_common/templates
- alle GISLive-Variablen haben das Präfix
GL_
und bestehen ausschließlich aus Großbuchstaben - im GISLive-Environment können alle gesetzten Variablen mit dem Befehl
glvar
angezeigt werden
Name | definiert in | Inhalt |
---|---|---|
GL_ENV | ct/bashrc | hat die Variable den Wert true, so wurde das Build-Environment geladen und man befindet sich darin; (Verlassen mit exit) |
GL_ABSPATH | setenv.sh | setzt den absoluten Pfad für alle Datei- und Verzeichnisangaben innerhalb der beiden Skript-Verzeichnisse |
GL_CTPL_DIR | co/variables.sh | Verzeichnis aller gemeinsamen, nicht Editions-abhängigen Dateivorlagen (templates) |
GL_ETPL_DIR | co/variables.sh | Verzeichnis aller Editions-abhängigen Dateivorlagen (templates) |
GL_AF_DIR | setenv.sh | Verzeichnis mit allen zusätzlichen Dateien für das Live-System, die nicht über die Debian-Repositories (als DEB-Paket) verfügbar sind (Bilder, HTML-Seiten, Programme, Quelltexte, ...) |
GL_BUILD_DIR | setenv.sh | Verzeichnis, in welchem der eigentliche Bauvorgang durchgeführt werden soll |
GL_LOG_DIR | co/load_env.sh | enthält Log-Dateien und weitere Status-Angaben zum Bauvorgang |
GL_ALPHA_FILE | co/variables.sh | Datei, für die automatisch hochzählende Alpha-Versionierung |
GL_BETA_FILE | co/variables.sh | Datei, für die automatisch hochzählende Beta-Versionierung |
GL_CHROOT_DIR | co/variables.sh | Zielverzeichnis für zusätzliche Daten im Live-System (in der chroot-Umgebung) |
GL_IPAGE_DIR | co/variables.sh | Verzeichnis der Infopage-Quelldateien; Die "Infopage" ist eine HTML-Seite mit Informationen (Inhalt, rechtliche Hinweise, ...) zum Live-System, welche beim Starten der graph. Oberfläche automatisch eingeblendet wird. |
GL_USER | co/variables.sh | Name des standardmäßig einzurichtenden Live-Users |
GL_MREPO | setenv.sh | URL des Debian-Hauptrepositories |
GL_MREPO_SEC | setenv.sh | URL des Debian-Repositories für Sicherheitsupdates |
GL_AREPO_FILE | setenv.sh | Datei mit zusätzlichen Repositories für das GISLive-System (Dateiaufbau: wie /etc/apt/sources.list ); diese sollten alle zusätzlichen Programme und Daten für die Erstellung des Live-Systems enthalten
|
GL_NOSOURCEPKG | setenv.sh | durch Setzen auf "true" wird verhindert, dass bei der Final-Version ein Quelltextpaket für alle im System vorhandenen Programme erstellt wird |