====== MapServer con supporto ad Oracle su Debian GNU/Linux ====== La compilazione di MapServer con supporto ad Oracle Spatial su Debian GNU/Linux è del tutto analoga alla procedura descritta in: **[[gdal_oracle]]**. Si riassume brevemente la procedura testata su Debian 6.0.3 Squeeze. ===== Installazione Oracle Instant Client ===== - Installare i pacchetti Oracle (originali rpm, //debianizzati// con ''alien''): * **''oracle-instantclient11.2-basiclite_11.2.0.2.0-2_i386.deb''** * **''oracle-instantclient11.2-devel_11.2.0.2.0-2_i386.deb''** - Aggiungere il nuovo path al dynamic linker echo /usr/lib/oracle/11.2/client/lib > /etc/ld.so.conf.d/oci.conf ldconfig - Installare la librearia **''libaio1''** con apt-get install libaio1 - Predisporre una directory che possa essere usata come **''ORACLE_HOME''**, ad esempio mkdir -p /usr/local/share/oracle/sdk ln -s /usr/lib/oracle/11.2/client/lib /usr/local/share/oracle/lib ln -s /usr/include/oracle/11.2/client /usr/local/share/oracle/sdk/include ===== Compilazione MapServer ===== - Scaricare i sorgenti e installare le dipendenze necessarie alla compilazione: apt-get source mapserver apt-get build-dep mapserver - Modificare il **''debian/rules''** aggiungendo ai **''COMMON_CONFIG''**: ... --with-postgis \ --with-oraclespatial=/usr/local/share/oracle \ --with-wcs \ ... - Ricompilare con dpkg-buildpackage -rfakeroot Verificare che il supporto sia incluso nell'eseguibile (''INPUT=ORACLESPATIAL''), ad esempio: # ./mapserv -v MapServer version 5.6.5 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS SUPPORTS=RGBA_PNG INPUT=EPPL7 INPUT=POSTGIS INPUT=ORACLESPATIAL INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE L'eseguibile linka dinamicamente le seguenti librerie (oltre a quelle standard): * libaio.so.1 * libclntsh.so.11.1 * libnnz11.so ===== Variabile ORACLE_HOME ===== Bisogna impostare la variabile **''ORACLE_HOME=/usr/lib/oracle/11.2/client''**, è necessaria alla libreria per trovare il file **''network/admin/tnsnames.ora''** Si può mettere direttamente in uno script cgi-bin (es. ''/usr/lib/cgi-bin/wms_prova'') che poi esegue il mapserver: #!/bin/sh MAPSERV="/usr/lib/cgi-bin/mapserv.fcgi" MAPFILE="maps/wms/wms_verdepubblico.map" export ORACLE_HOME="/usr/lib/oracle/11.2/client" if [ "${REQUEST_METHOD}" = "GET" ]; then if [ -z "${QUERY_STRING}" ]; then QUERY_STRING="map=${MAPFILE}" else QUERY_STRING="map=${MAPFILE}&${QUERY_STRING}" fi exec ${MAPSERV} else echo "Sorry, I only understand GET requests." fi exit 1 Esempio di tnsnames.ora: sitfi02 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle.intranet.net)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = dbinstance) ) )