User Tools

Site Tools


tecnica:gps_cartografia_gis:gdal_oracle

This is an old revision of the document!


GDAL/OGR con supporto ad Oracle su Debian GNU/Linux

Questa ricetta serve a compilare la libreria GDAL/OGR con il supporto ad Oracle su una Debian Lenny.

Il supporto viene chiamato OCI (Oracle Call Interface) e viene fornito dal software Oracle Instantclient. Per la compilazione di GDAL è necessario anche il relativo Oracle Instantclient SDK.

I passaggo sono i seguenti:

  1. Trasformazione dei pacchetti rpm forniti da Oracle in pacchetti deb.
  2. Installazione di Oracle Instantclient e relativo SDK.
  3. Compilazione di gdal con supporto oci dai sorgenti Debian.
  4. Intallazione dei pacchetti compilati.

Installazione di Oracle Instantclient

Scaricare dalla pagina Oracle i seguenti archivi rpm:

  • oracle-instantclient11.1-basiclite
  • oracle-instantclient11.1-devel

Si tratta della libreria OCI vera e propria e dei file header per compilare programmi contro questa libreria.

Con alien (pacchetto da installare) convertire i pacchetti .rpm in .deb, quindi installare i pacchetti .deb (per eseguire alien come utente non privilegiato è possibile utilizzare fakeroot):

alien oracle-instantclient11.1-basiclite-*.rpm
alien oracle-instantclient11.1-devel-*.rpm
dpkg -i oracle-instantclient11.1-*.deb

Con dpkg -L pacchetto si scopre il percorso di installazione di libreria e header.

Aggiungere il path della libreria Oracle alla configurazione di ldconfig e aggiornare la cache di ldconfig:

echo /usr/lib/oracle/11.1/client/lib > /etc/ld.so.conf.d/oci.conf
ldconfig

La conversione da rpm a deb non suggerisce le dipendenze, bisogna installare manualmente il pacchetto Debian libaio1:

apt-get install libaio1

Compilare GDAL/OGR come pacchetto Debian

Installare i pacchetti di sviluppo Debian, una selezione minima potrebbe essere:

  • dpkg-dev
  • build-essential
  • fakeroot

Scaricare i sorgenti della libreria GDAL:

mkdir -p /usr/local/src/gdal
cd /usr/local/src/gdal
apt-get source gdal
cd gdal-1.5.2

Modificare il file debian/rules, in modo da includere nella fase di configure anche le librerie OCI, in pratica oltre ai vari --with-mysql, --with-pg, --with-sqlite si deve aggiungere due righe (attenzione a mettere anche il backslash a fine riga):

--with-oci-include=/usr/include/oracle/11.1/client \
--with-oci-lib=/usr/lib/oracle/11.1/client/lib \

Le Debian rules cercano la libreria Oracle nnz10 (almeno per gdal 1.5.2-3), mentre attualmente esiste la libreria nnz11; sistemare con un link simbolico:

ln -s libnnz11.so /usr/lib/oracle/11.1/client/lib/libnnz10.so

Infine lanciare la compilazione del pacchetto (l'opzione -rfakeroot è richiesta solo se non si è utente root):

dpkg-buildpackage -rfakeroor

La libreria GDAL richiede la presenza di molte librerie e per la sua compilazione sono richiesti i rispettivi header file. Per fortuna dpkg-buildpackage elenca tutti i pacchetti necessari (le build dependencies) non appena viene lanciato. Si deve provvedere ad installare tutti i pacchetti richiesti.

Al termine della compilazione, nella directory padre si trovano i pacchetti:

  • gdal-bin
  • libgdal1-1.5.0
  • libgdal1-dev
  • libgdal-doc
  • libgdal-perl
  • libgdal-ruby
  • libgdal-ruby1.8
  • python-gdal

Installazione e verifica

Si installano almeno i pacchetti gdal-bin e libgdal1-1.5.0. Conviene metterli on-hold per evitare che vengano aggiornati:

echo "libgdal1-1.5.0 hold" | dpkg --set-selections 
echo "gdal-bin hold"       | dpkg --set-selections 

Per verificare che la libreria installata abbia il supporto Oracle:

ldd /usr/lib/libgdal1.5.0.so | grep oracle
ogrinfo --formats

Una layer OGR/Oracle su MapServer si ottiene con un mapfile del tipo:

  LAYER
    NAME "aree_strada"
    STATUS DEFAULT
    TYPE POLYGON
    CONNECTIONTYPE OGR
    CONNECTION "OCI:user/passwd@192.168.1.122"
    DATA "tablename"
    CLASS
      COLOR 212 164 96
    END
  END
tecnica/gps_cartografia_gis/gdal_oracle.1242659771.txt.gz · Last modified: 2009/05/18 17:16 by niccolo