GISLive Build

Aus FOSSGIS
Wechseln zu: Navigation, Suche

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.

Mailing-Liste

https://lists.fossgis.de/mailman/listinfo/gislive-liste

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-Skripte
  • live-helper - Basisskripte
  • syslinux - für die Erstellung eines Angepassten Bootloaders
  • curl - für interne Prüfroutinen
  • sudo
    • 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:
  • 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 und GL_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

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.sh [-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

Da es sich bei externen Daten/Programme i.d.R um große Binärdateien handelt, die in einem SVN eher stören würden, wurden diese zusätzlichen Daten in ein sogenanntes AF-Paket ausgelagert (siehe #Bau-Skripte und Binärdaten). Ausgepackt besitzt dieses Paket folgende Verzeichnisstruktur:

- in_livesys    # alle hier hinein kopierten Daten landen im LiveSystem unterhalb von /opt/gislive
  |- docs       # Dokumentationen
  |- geodata    # Geodaten
  |- programs   # Programme
  |- web        # Programme oder Webseiten, die über den lokalen Apache-Webserver verfügbar sein sollen
- in_sources    # Quelltexte zu den zusätzlichen Programmen im LiveSystem (nicht für die Workshops notwendig)
- on_disk       # landen auf der DVD aber außerhalb des LiveSystems (steht so z.B. unter Windows zur Verfügung)

Sollen spätere Programmteile an anderen Orten als unter /opt/gislive zur Verfügung stehen, so sind SymLinks bevorzugt zu verwenden (siehe nächster Abschnitt).

Live-System anpassen

Ausgehend davon, dass alle benötigten Debian-Pakete installiert, zusätzliche Daten im LiveSystem unterhalb von /opt/gislive ihren Platz gefunden haben, steht jetzt noch die Konfiguration des späteren LiveSystems an. Während des Bauvorgangs gibt es die sogenannte chroot-Phase, die bereits die vollständige Dateistruktur des späteren LiveSystems abbildet. In dieser Phase ist es möglich, durch ein Shellscript Anpassungen vorzunehmen. Innerhalb der GISLive-Skripte ist dafür die Datei gl_edition/functions/hookscript_chroot.sh zuständig. Dort können normale Bash-Befehle abgesetzt werden. Zu beachten ist, dass der dortige Skriptinhalt wiederum in eine andere Datei geschrieben wird (zwecks Auflösung der GISLive-Shell-Variablen), bevor die Befehle ausgeführt werden. So müssen z.B. Sonderzeichen durch einen zusätzlichen Backslash maskiert werden (Bsp. Zeilenende: Doppelbackslash \\ usw.)

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

Wie erzeugt man ein zusätzliches Icon (Programmstarter) auf dem KDE-Desktop?

Die Icons auf dem Desktop sind nutzerabhängig und somit im Homeverzeichnis hinterlegt. Die Vorlage des Homeverzeichnisses für das Livesystem ist Bestandteil der SVN-Skripte und befindet sich in gl_edition/files/in_livesys/skel. Dort gibt es das Unterverzeichnis Desktop in welchem die Icons als Dateien hinterlegt sind. Um ein zusätzliches Icon hinzuzufügen, kopiert man einfach eine bereits vorhandene Datei (als Vorlage) und ändert die Einträge passend ab.
Ein Beispiel (Starten einer lokalen Webseite mit dem Iceweasel):

[Desktop Entry]
Comment=
Comment[de]=
Exec[$e]=iceweasel "http://localhost/gislive/wmsdemo/"
GenericName=
GenericName[de]=
Icon=/opt/gislive/artwork/icons/osm.png
MimeType=
Name=OSM-Karte Berlin
Name[de]=OSM-Karte Berlin
Path[$e]=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=

Mehr Informationen hierzu findet man unter [1].

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

chroot-Umgebung zum Bauen von LiveDVD

Benötigte Pakete installieren, soweit noch nicht installiert:

sudo apt-get install dchroot debootstrap

Verzeichnis erstellen welches die chroot aufnehmen soll:

sudo mkdir /opt/lenny32

Debian Lenny in das zuvor erstellte Verzeichnis mit Hilfe von debootstrap installieren.

sudo debootstrap --resolve-deps --arch i386 lenny /opt/lenny32 http://ftp.de.debian.org/debian

Editieren von /etc/fstab mit dem Ziel bestimmte Verzeichnisse in die chroot-Umgebung einzuhängen.

# for 32bit lenny chroot
/tmp /opt/lenny32/tmp none bind 0 0
/dev /opt/lenny32/dev none bind 0 0
/home /opt/lenny32/home none bind 0 0
/opt /opt/lenny32/opt none bind 0 0
/proc /opt/lenny32/proc proc defaults 0 0

Das mounten nicht vergessen:

mount -a

Zuletzt Dateien zur Benutzerverwaltung in die chroot-Umgebung kopieren.

sudo cp /etc/passwd /etc/shadow /etc/group /etc/sudoers /etc/hosts /opt/lenny32/etc/

Fertig.