HBUMNMapServer ger Capter Bezug
= Bezug und Installation (Florian Thürkow, Kai Behncke) (1)\index{Bezug}\index{Installation}
Die Installation des MapServers auf einem System kann zuweilen seine Tücken haben, insbesondere dann, wenn Sie die Quelltexte selber kompilieren möchten. Sie ist im folgenden Schritt für Schritt so beschrieben, dass Sie dennoch in kürzester Zeit zu einem laufenden System kommen können.
Bezug
Auf der Mapserver Website http://mapserver.org gibt es eine Download-Sektion, die in diverse Rubriken unterteilt ist:
- Offizieller Release : Dieses Paket enthält den Quellcode für die aktuelle, stabile Version des MapServers. Zur Drucklegung dieses Buches ist das Version 5.2.1.
- Ältere Releases : Alte Versionen. Unterstützt wird vor allen Dingen immer die aktuelle Version. Fragen auf der Mailingliste zur älteren Version werden gerne mit dem Hinweis beantwortet, man solle doch auch die aktuelle Version upgraden.
- Interim Builds : Dies sind täglich (automatisch) vorgenommene Kompilierungen aus dem CVS-Verzeichnis; d.h. aus dem Verzeichnis, in dem die Entwickler den aktuellsten Quellcode lagern. Der Umgang mit diesen Paketen soll an dieser Stelle nicht behandelt werden, zumal nicht einmal sichergestellt ist, dass sie überhaupt funktionieren.
- Windows : Für Windows gibt es spezielle Pakete, mehr dazu weiter unten.
Grundsätzlich gilt für alle Wege der Installation, dass Sie am Ende das fertige MapServer-Binary in das CGI-Verzeichnis Ihres Webservers kopieren. Sie können prüfen, ob das Programm ausgeführt wird, indem Sie (nachdem der Webserver gestartet worden ist) seinen URL aufrufen:
http://www.example.com/cgi-bin/mapserv
Die Fehlermeldung, die Sie dann erhalten sollten, lautet:
No query information to decode. QUERY_STRING is set, but empty.
Motzt der Server herum, ist er gesund, wie bereits in Abschnitt~\ref{text:mapfile:cgi} erklärt. Beachten Sie, dass Sie unter Windows nicht gezwungenermaßen die Endung =.exe= an en URL-Aufruf anhängen müssen.
Vorkompilierte Binaries
Windows
Für Windows erhalten Sie von der oben genannten Website die beiden folgenden Pakete
ms4w
osgeo4w
Linux
FGS & Co.
Quelltexte
Das herunterladen von Quelltexten und manuelle konfigurieren/kompilieren ist letztlich unter Linuxdistributionen die sauberste aber auch die langwierigste Form der Installation. Ihre Nerven sollten, zumal wenn Sie eine solche Installation erstmalig durchführen, schon ein klein wenig strapazierfähig sein. Aber keine Sorge, im Endeffekt wird der MapServer sicher laufen. Sie sollten aber mit einer Shell Ihrer Wahl umgehen können und mit der Installation von Software mittels =make= und ähnlichen Werkzeugen vertraut sein. Unter Umständen benötigen Sie auch einen Texteditor, um leichte Veränderungen in der einen oder anderen Datei vornehmen zu können
Die Installation des Mapservers ist nicht trivial, da diese in Abhängigkeit vom verwendeten Betriebssystem und der Erfahrung des Benutzers immer eine Individuelle ist. Die praktischen Tests ergaben folgendes Fazit: Die Reihenfolge, in der die einzelnen Pakete installiert werden, ist für die erfolgreiche Installation entscheidend. Tabelle 1 vermittelt einen Überblick über den in der Praxis evaluierten Installationsvorgang des Mapservers.
Reihenfolge | Bibliothek | Version | Optional (j/n) | Link | ||||
1 zlib 1.2.3 n www.zlib.net | 2 libpng 1.2.32 n www.libpng.org/pub/png | 3 libJPEG 6 j www.ijg.org/files | 4 Freetype 2.3.5 j www.freetype.org | 5 GD 2.0.35 j www.libgd.org | 6 Proj.4 4.5.0 j http://proj.maptools.org | 7 GDAL 1.4.2 j www.gdal.org | 8 shapelib 1.2.9 j http://shapelib.maptools.org | 10. Mapserver 4.10.3 http://mapserver.gis.umn.edu |
Legen Sie als erstes mehrere Verzeichnisse an um die einzelnen Bibliotheken, den Apache Webserver, PHP, den MapServer herunterzuladen und letztlich zu installieren.
mkdir /opt/install mkdir /opt/install/zip
Unter dem Quelltext, auch Quellcode (engl. source code) oder Programmcode, versteht man in der Informatik den für Menschen lesbaren, in einer Programmiersprache geschriebenen Text eines Computerprogramms.
In der Regel wird der entsprechende Code auf den jeweiligen Webseiten auch direkt als "Source-Code" angeboten.
Die Dateien erkennen Sie oft an der Endung "tar.gz" bzw. "tar.bz2".
Um die Quelltexte zu kompilieren benötigen Sie zudem einige Entpackungsprogramme bzw. Kompiler. Oftmals sind diese
schon vorinstalliert, wenn nicht so müssen sie nachintsalliert werden, z.B.
bison (ftp.gnu.org/gnu/bison) (Aktuell war 2.4) (C/C++ kompiler)
gcc (http://gcc.gnu.org) (aktuell war 4.3.3) (Eine Compiler Collection)
bzip2 (http://bzip.org/) (1.0.5) (Komprimierungs-/Dekomprimierungsprogramm)
Bibliotheken
Laden Sie dann folgende Quellcodes herunter:
freetype (http://www.freetype.org (Zum Zeitpunkt der Erstellung des Buches lag von freetype die Version 2.3.6 vor)). FreeType stellt eine Bibliothek dar um vektorisierte Schriftarten in Rastergrafiken umzuwandeln. Diese Bibliothek ist unbedingt zu empfehlen.
zlib (http://www.zlib.net) (aktuell war Version 1.2.3). Die Bibliothek zlib dient zum Komprimieren und Dekomprimieren von Daten mit dem sog. Deflate-Algorithmus.
libpng (http://www.libpng.org) (aktuell war Version 1.2.34). Diese Biliothek sollte unbedingt installiert werden. Die libpng-Bibliothek dient zum Bearbeiten/Darstellen von PNG-Bildern.
libgd (http://www.libgd.org (aktuell war 2.0.35). GD dient zur Erstellung/zum Rendering u.a. von PNG-, JPEG- and GIF-Bildern. Diese Bibliothek wird unbedingt vom MapServer benötigt.
Für den Fall, dass Sie internationale Zeichensätze integrieren wollen benötigen Sie noch die libiconv-Bibliothek. Die erhalten Sie von http://www.gnu.org/software/libiconv/ .
Sehr zu empfehlen sind auch die folgenden Bibliotheken:
Proj (trac.osgeo.org/proj) (4.6.1), Bibliothek für kartographische Projektionen. Zwingend notwendig, um OGC-konforme Funktionialitäten zu erhalten. Und natürlich, wenn man Daten umprojizieren will. Generell eine Sache, die man haben möchte.
AGG (http://antigrain.com) (2.5) Dient ebenfalls zum Rendern von Grafiken, sorgt letztlich für ein etwas besseres Rendern als die GD-Bibliothek, ist aber auch etwas langsamer.
Gdal (http://gdal.org) (1.6.0), Bibliothek für ca. 40 Rasterformate, zugleich beinhaltet diese Bibliothek auch die OGR-Library mit Unterstützung für nahezu 20 Vektortypen (sollte möglichst installiert werden). Sollten Sie z.B. Arc SDE für Rasterdaten nutzen wollen, so benötigen Sie diese Bibliothek.
libcurl (http://curl.haxx.se/libcurl) (7.19.2)- Diese Bibliothek sorgt für OGC-(WFS/WMS/WCS)-Unterstützung (sehr wichtig!). Eine Bibliothek für den Dateitransfer über Protokolle wie HTTP, FTP und so weiter.
Optional:
FEHLT NOCH:FAST-CGI
libtiff (http://www.libtiff.org) (aktuell: 3.8.2) Für Tiff-Dateien, wird für Geotiff benötigt
ligbeotiff (http://trac.osgeo.org/geotiff (aktuell: 1.2.5) LibGeoTIFF dient zum Lesen und Schreiben von GeoTIFF-Informationen.
Geos (http://trac.osgeo.org/geos/) (3.0.3). Letztlich eine Bibliothek zur geografischen Datenverarbeitung. Diese beinhaltet alle Operatoren der OGC- Spezifikation für SimpleFeatures (z.B. Funktionen wie touch, union, intersect etc.). Benötigt wird mindestens Version 4.10 des MapServers.
libreadline (ftp.gnu.org/gnu/readline/readline-5.2.tar.gz) (5.2), Bietet Funktionen an, um Kommandozeilen zu editieren. Wird von PostgreSQL genutzt für die psql-Eingabekonsole.
libjpeg (http://ijg.org) (6.0), Dient zum Erstellen/Bearbeiten von JPEG-Bildern.
libxml (ftp.xmlsoft.org/libxml2/). Dient zum Parsen von xml. Wird für den OGC SOS-Support benötigt.
pdflib (lite) (http://www.pdflib.com/products/pdflib-family/pdflib-lite): Für die Erstellung von PDF-Output, wird eher selten eingesetzt.
libming (http://www.libming.org): Für Macromedia Flash Output. (wird eher selten eingesetzt)
Flex (http://flex.sourceforge.net) (Version 2.5.35) (PostGIS benötigt diese Bibliothek)
libpg: Diese Bibliothek steht zur Verfügung wenn Sie PostgresSQL/PostGIS installieren. Den Quellcode finde Sie auf http://postgresql.org (8.3.5) bzw. auf http://postgis.refractions.net/download (1.3.5)
Proprietäre Bibliotheken
Arc SDE Client Bibliothek: Diese Bibliothek steht nicht frei zur Verfügung, sie ist Bestandteil von von der ESRI-Geodatenbak ArcSDE.
Oracle Spatial OCI: Aufsatz für die Oracle-Datenbank. Diese Bibliothek bekommen Sie von der Oracle-Seite.
Die heruntergeladenen Dateien sind noch "gepackt", diese müssen Sie "entpacken".
Eine .tar,gz Datei entpacken Sie mit:
tar xvfz freetype-2.3.8.tar.gz
Eine tar.bz2-Datei entpacken Sie mit:
tar xvfl geos-3.0.3.tar.bz2
Installation der Bibliotheken
Wenn Sie die Bibliotheken installieren wollen wechseln Sie bitte in das VErzeichnis der jeweilig entpackten Bibliothek. Dort führen Sie zunächst den Befehl
./configure
aus. Dieser bewirkt zunächst eine Konfiguration der entsprechenden Bibliothek. Nach Abschluss der Konfiguration wird ein sogenanntes Makefile erzeugt. Dieses beinhaltet die notwendigen Informationen um den Quellcode zu kompilieren. Führen Sie danach den Befehl
make
und anschließend
make install
aus und die Biliotheken sind installiert.
Folgende Schritte sollten Sie dann in den Ordnern der entpackten Bibliotheken ausführen:
readline (./configure,make, make install)
zlib (./configure, make, make test (um zu überprüfen) make install)
libpng (./configure, make, make install)
libjpeg (./configure --enable-shared, make, make test, make install) make install-lib (dieser Befehl damit libjpeg auch ordentlich von der GD-Bibliothek erkannt wird)
flex (./configure, make, make install)
curl (./configure, make, make install)
freetype (./configure, make, make install)
Sofern Sie verschiedene internationale Zeichensätze installieren möchten müssen Sie zunächst libiconv installieren: libiconv (./configure, make, make install)
gd (./configure --with-liconv (diese Option nur dann, wenn Sie internationale Zeichensätze benötigen), make , make install)
Sie können testen ob gd mit der libiconv kompiliert wurde indem Sie ein
gdlib-config --libs
eingeben. Im Output sollte dann ein "-liconv" erscheinen.
tiff (./configure/make/make install)
geotiff (./configure/make/make install)
geos (./configure, make, make install)
xml (./configure, make, make install)
gdal (./configure, make, make install)
proj (./configure, make, make install)
AGG (Bei dieser Bibliothek brauchen Sie nur im Ordner des entpackten Quellcodes den Befehl "make" ausführen.
.....sowie ggf. die weiteren Bibliotheken wie z.B. libming oder pdflib.
Apache Webserver
Als Webserver nutzen Sie am Besten den Apache (2.2.11) Den Quellcode bekommen Sie von httpd.apache.org/download.cgi
Anschließend installieren Sie bitte den Apache Webserver.
Zunächst einmal führen Sie bitte im Ordner des entpackten Quellcodes (/opt/install/unzip/httpd-2.2.11) ein
./configure --enable-so --enable-mime-magic --enable-cgi --prefix=/usr/local/apache make make install
aus.
Achten Sie bitte unbedingt darauf, dass entweder der User des Apache (oder aber die Gruppe)
Inhaber des Ordners /usr/local/apache (und seiner Unterverzeichnisse) ist.
Wie der User/die Gruppe heissen steht in der Datei /usr/local/apache/httpd.conf.
z.B.
User daemon Group daemon
Ein
ls -l im Ordner /usr/local
zeigt, an, wem aktuell der Ordner /usr/local/apache gehört.
Sollte z.B. der User "root" und auch die Gruppe "root" Inhaber sein, so ändern Sie dieses bitte mit:
chown -R root:daemon (je nachdem wie die Gruppe des Apache heißt) /usr/local/apache
Anschließend starten Sie einmal bitte den Apache mittels
/usr/local/apache/bin/apachectl start
Sollte dann evtl eine Fehlermeldung kommen der Art von:
error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
so werden Bibliotheken nicht gefunden. Ändern Sie dann die Datei /etc/ld.co.conf und sorgen Sie dafür dass dort z.B. folgendes steht:
/lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/lib /usr/local/lib
Anschließend führen Sie auf Kommandozeile den Befehl
ldconfig
aus.
und geben in Ihrem Browser ein:
http://localhost
Es müßte eine Meldung der Art von "It works" kommen.
PostgreSQL/PostGIS
Als nächstes installieren Sie einmal die PostgreSQL-Datenbank mit PostGIS-Aufsatz. PostgreSQL können Sie von http://www.postgresql.org/download herunterladen (aktuell war 8.3.5). PostGIS erhalten Sie auf http://postgis.refractions.net/ (1.3.5)
./configure --without-readline (sofern es Schwierigkeiten gibt die libreadline zu finden) make make install
Für die PostGIS-Installation entpacken Sie bitte den PostGIS-Ordner und benennen Sie ihn in "postgis". Dieses funktioniert wie folgt:
mv postgis-1.3.5 postgis
Den umbenannten Ordner "postgis" kopieren Sie in den Ordner /opt/install/zip/postgresql-8.3.5/contrib.
cp -R postgis /opt/install/zip/postgresql-8.3.5/contrib/
In dem Ordner führen Sie aus:
./configure –with-pgsql=/usr/local/pgsql/bin/pg_config make make install
Anschließend führen Sie bitte aus:
adduser postgres
(Ein Standarduser mit dem Namen „postgres“ wird angelegt, Sie müssen hierfür auch ein Passwort festlegen)
mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data
(„postgres“ wird Besitzer des Verzeichnisses)
su – postgres
(Einloggen als user postgres)
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
(Datenbankschema wird initialisiert)
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start
(Start der Datenbank)
PHP
Sinnvoll ist es auf jeden Fall den Apache mit PHP zu nutzen, den aktuellen Quellcode bekommen Sie von http://php.net/downloads.php) (5.2.8)
Dann wechseln Sie bitte in den entpackten Ordner des PHP-Quellcodes:
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-freetype-dir=/usr/lib --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --enable-shared --with-zlib -- enable-mbstring --with-gd --with-pgsql –prefix=/usr/local/php5
Anschließend ein
make
sowie ein
make install
Dann:
mkdir /usr/local/php5/extensions
(damit legen Sie ein Verzeichnis für PHP-Erweiterungen an, PHP/Mapscript wird hier später installiert)
cp /opt/install/unzip/php-5.2.8/php.ini-dist /usr/local/php5/lib/php.ini
Dann geben Sie in der php.ini ein:
extension_dir=/usr/local/php5/extensions
Um zu testen ob PHP funktioniert erstellen Sie eine Datei mit dem Inhalt
<? phpinfo(); ?>
nennen Sie diese "test.php" und legen Sie diese in den Ordner /usr/local/apache/htdocs
Anschließend editieren Sie bitte die Konfigurationsdatei des Apache-Webserver /usr/local/apache/conf/httpd.conf. Geben Sie dort ein:
LoadModule php5_module modules/libphp5.so (sofern dieses bei der Installation von php nicht automatisch eingetragen wurde)
AddType application/x-httpd-php .php .phtml
Anschließend rufen Sie auf: http://localhost/test.php
Wenn alles funktioniert erhalten Sie eine Ausgabe mit der aktuellen PHP-Version.
UMN MapServer
In den entpackten Quellen des UMN MapServers (http://www.mapserver.org) editieren Sie bitte die Datei mapsymbol.h Standardmäßig ist die Anzahl der integrierbaren Symbole relativ niedrig. Ändern Sie dieses z.B. wie folgt:
#define MS_SYMBOL_ALLOCSIZE 200
Zudem ändern Sie einmal die Datei mapserver.h
#define MS_LAYER_ALLOCSIZE 200 #define MS_CLASS_ALLOCSIZE 20 #define MS_STYLE_ALLOCSIZE 4 ... #define MS_MAXIMAGESIZE_DEFAULT 10000
Damit es keine Probleme mit dem dynamischen Linken der Bibliotheken gibt ändern Sie, sofern noch nicht getan, bitte noch die Datei
/etc/ld.so.conf
oder eine ähnliche Datei in /etc/ld.so.conf.d/ (je nach Distribution) Fügen Sie dort die Zeilen
/usr/lib /usr/local/lib /usr/local/pgsql/lib
ein.
Anschließend geben Sie den Befehl
ldconfig
ein.
Dann wechseln Sie in den Ordner des entpackten MapServers und geben z.B. ein:
./configure --with-ogr --with-gdal --with-wmsclient --with-wmsserver --with-wfsclient --with-wfs --with-tiff --with-jpeg --with-png --with-freetype --with-proj --with-geos --with-libiconv --with-agg=/opt/install/zip/agg-2.5 --with-postgis=/usr/local/pgsql/bin/pg_config --with-threads --with-php=/usr/local/php5
...und geben Sie dann ein
make
ein. Wenn alles kompiliert wird geben Sie ein
./mapserv -v
und Sie erhalten Informationen über die Version.
MapServer version 5.2.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=THREADS SUPPORTS=GEOS INPUT=TIFF INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
Kopieren Sie das binary "mapserv" in den Ordner /usr/local/apache/cgi-bin und führen Sie aus.
http://localhost/cgi-bin/mapserv
Wenn dann die Meldung
No query information to decode. QUERY_STRING is set, but empty.
kommt ist alles wunderbar. Der MapServer ist einsatzbereit.
Änderungen
Eine Liste der aktuellsten Änderungen am MapServer-Quellcode finden Sie auf der Website von DM Solutions~http:website:dmsolutions unter /mapserver/dl/mapserver_ChangeLog.txt . Dabei handelt es sich um eine Auflistung aller Kommentare, die von den Entwicklern bei der Änderung von Dateien im CVS hinzugefügt werden.
==CVS==\index{CVS}
Das CVS (Concurrent Versions System) ist ein System, mit dem Entwickler, die über ein Netzwerk verteilt sind, gemeinsam am gleichen Codebestand arbeiten können. So Sie auch keinen schreibenden Zugriff auf den MapServer-Code haben, so können Sie ihn sich dennoch lesend herunterladen und somit sozusagen immer 'on the bleeding edge' der MapServer-Entwicklung sein.
Seien Sie aber gewarnt: Da es sich um Code handelt, an dem aktiv herumentwickelt wird, kann er Macken haben. Es ist nicht einmal gesagt, dass er überhaupt kompiliert. Es kann zeitraubend sein, dann an dieser Stelle auf die Fehlersuche gehen zu müssen.
Geben Sie auf der Kommandozeile Ihrer Wahl ein:
- export CVSROOT=:pserver:cvs@mapserver.gis.umn.edu:/data2/cvsroot
- cvs login
- cvs -z3 co mapserver
Die Anfrage nach einem Paßwort beim Login können Sie mit einem simplen Druck auf die Return-Taste befriedigen.
Das Kommando =export= belegt die Umgebungsvariable (hier =CVSROOT= ), wenn Sie die Shell =bash= verwenden. Sollten Sie eine andere Shell benutzen, konsultieren Sie die Dokumentation dieser Shell, um mehr über das Setzen von Umgebungsvariablen herauszufinden.
MapScript
Das Kompilieren von MapScript kann eine Wissenschaft für sich sein. Im folgenden sollen Sie trotzdem den Überblick darüber gewinnen, wie der Vorgang aussieht.
Aus den Quellen
Die Installation von MapScript aus dem Quellcode soll -- schon wie bei der Beschreibung des MapServer-Quellcodes weiter oben -- hier für ein Unix-System gezeigt werden.
FIXME
Beachten Sie bitte auch, dass die PHP-Fassung von MapScript die am besten dokumentierte und am meisten gepflegte Fassung ist.
\subsubsection*{PHP}(11)
Zunächst scheint alles ganz einfach zu sein. Das Kompilieren von PHP MapScript ist einfach ein Schalter bei der Kompilierung des MapServers. Wenn Sie also wie in Abschnitt~10 beschrieben vorgehen, können Sie den Parametern einfach einen weiteren hinzufügen:
- ./configure [...] --with-php=/usr/src/php-4.3.3
Damit geben Sie an, in welchem Verzeichnis die Quellen von PHP liegen.
Eventuell erkennen Sie an dieser Stelle, dass einige Schwierigkeiten auf Sie zukommen. Sollten Sie PHP nicht selber aus den Quellen kompiliert haben, dann haben Sie natürlich auch dieses Verzeichnis nicht. Des weiteren müssen Sie natürlich, wenn Sie PHP aktualisieren, auch MapScript neu bauen. So kann eine Aktualisierung einen ganzen Rattenschwanz weiterer Updates nach sich ziehen, die natürlich beim Selberkompilieren entsprechend aufwendiger sind.
Zwei weitere Einschränkungen müssen Sie außerdem noch kennen. Zum einen funktioniert MapScript im Moment nicht mit einer modularen Version von PHP. PHP muß als CGI-Programm installiert sein. Wie Sie das bewerkstelligen, entnehmen Sie der PHP-Dokumentation.
Desweiteren muß PHP davon abgehalten werden, seine eigenen Routinen für reguläre Ausdrücke zu verwenden. Das geschieht beim Kompilieren von PHP, indem man =./configure= den Parameter =--with-regex=system= mitgibt. Falls diese Option nicht benutzt wird, beschwert sich MapServer bereits beim eigenen =configure= -Vorgang und bricht ab.
Beachten Sie, dass Sie für die Anbindung an PostGIS-Datenbanken keine Unterstützung für PostgreSQL in PHP benötigen. MapScript wird direkt gegen die PostGIS-Bibliotheken gelinkt.
Wie Sie dann mit PHP MapScript arbeiten, ist in Kapitel~\ref{text:mapscript} erklärt.
\subsubsection*{Die Anderen}
Die MapScript-Module für andere Programmiersprachen werden anders gehandhabt. Sie werden mithilfe des Interface-Generators SWIG~http:website:swig erstellt.
Das Konzept von SWIG sieht folgendermaßen aus: Sie erstellen Code, beispielsweise in C. Dieser Code kann wiederum gegen andere Bibliotheken gelinkt sein, wenn Sie möchten. Im Fall von MapScript beispielsweise liegt der MapServer-Code auf verschiedene Dateien verteilt vor, und darüberhinaus wird die Bibliothek GD hinzugelinkt.
Als nächstes erstellt man eine sogenannte Interfacedatei für SWIG, die die Endung =.i= trägt. Hier definieren Sie, wie die Aufrufe von Funktionen aus der anderen Programmiersprache heraus aussehen soll. So gibt es zum Beispiel in dieser Datei bei der Definition des Layer-Objektes folgende Zeilen:
int queryByRect(mapObj *map, rectObj rect) {
return msQueryByRect(map, self->index, rect);
}
Die nach außen hin sichtbare Methode =queryByRect= des Layer-Objektes ruft also intern die Funktion =msQueryByRect= auf.
Im Fall von MapScript wird die Interfacedatei bereits mitgeliefert, sie hat den Namen =mapscript.i= .
\subsubsection*{Perl}
Am Beispiel von Perl soll nun gezeigt werden, wie SWIG sodann im Detail gehandhabt wird. Sie wechseln in das Unterverzeichnis =mapscript/= in Ihrem MapServer-Quellcodeverzeichnis und führen aus:
- swig -perl -DSHADOW mapscript.i
Dieser Vorgang produziert eventuell einige Warnungen, die jedoch ignoriert werden können.
Sie werden in dem Verzeichnis nun zwei neue Dateien finden: einmal =mapscript_wrap.c= , und dazu eine sprachenabhängige Datei. Im Fall von Perl ist das =mapscript.pm= . Diese beiden Dateien kopieren Sie sich nun in das Unterverzeichnis der Sprache Ihrer Wahl, hier also nach =perl/= .
Nachdem Sie nun selber in dieses Verzeichnis gewechselt sind, können Sie ganz einfach den normalen Vorgang für die Installation eines Moduls in der jeweiligen Sprache anstoßen. Für Perl ist das:
- perl Makefile.PL
- make
- make install
Spätestens für den letzten Schritt müssen Sie Schreibrechte im Perl-Installationsverzeichnis besitzen.