GISLive Build
allgemeine Informationen[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
https://lists.fossgis.de/mailman/listinfo/gislive-liste
technische Voraussetzungen[Bearbeiten | Quelltext bearbeiten]
Hardware[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Einrichtung[Bearbeiten | Quelltext bearbeiten]
- 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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
Wie erzeugt man ein zusätzliches Icon (Programmstarter) auf dem KDE-Desktop?[Bearbeiten | Quelltext bearbeiten]
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[Bearbeiten | Quelltext bearbeiten]
GISLive-Environment-Variablen[Bearbeiten | Quelltext bearbeiten]
- 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[Bearbeiten | Quelltext bearbeiten]
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.