Compilando o TerraOGC no Linux

Arquivo atualizado para o uso do CMake. Para QMake, verifique as versões anteriores deste documento.

Dependências

Alguns pacotes necessários para compilar e usar o TerraOGC. Os nomes podem variar de distro para distro. Aqui seguem os do Mandriva:

  • GD (criação de imagens)
  • ZLib (compactação)
  • PostgreSQL (SGBD)
  • Apache (Web Server)
  • Apache Xerces (API XML) >= 2.8.0
  • cURL (API Web Client)
  • LibZip (API p/ PKZip): Algumas distros não têm. Então baixe aqui.
  • Boost Regexp (regular expressions)

Mandriva

  • GD: libgd2, libgd2-devel
  • ZLib: zlib1, zlib1-devel
  • PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-plpgsql, postgresql-server
  • Apache: apache-base, apache-conf
  • Apache Xerces: libxerces-c0, libxerces-c0-devel
  • cURL: libcurl4, libcurl-devel
  • LibZip: libzip, libzip1-devel

OpenSUSE

  • GD: gd, gd-devel
  • ZLib: zlib, zlib-devel
  • PostgreSQL: postgresql, postgresql-devel, postgresql-contrib, postgresql-server
  • Apache: apache2
  • Apache Xerces: Xerces-c, libXerces-c-devel
  • cURL: libcurl4, libcurl-devel
  • LibZip: libzip1 e libzip-devel (libzip2 no OpenSUSE 13.2)
  • Boost: boost, boost-devel

Obs: a partir da versão 12.3 do OpenSUSE recomenda-se adicionar o repositório App:Geo e instalar o libgeotiff-devel, com os fontes da LibGeoTIFF, e libjpeg8-devel.

CentOS

  • GD: gd e gd-devel
  • ZLib: zlib e zlib-devel
  • PostgreSQL: postgresql, postgresql-libs, postgresql-server, postgresql-contrib, postgresql-pl, postgresql-devel
  • Apache: httpd
  • Apache Xerces: Só encontrei pacotes ⇐ 2.7.0. Para gerar os pacotes:
    1. Baixe a versão 2.8.0 do site
    2. Para criar os pacotes use o comando:
      # rpmbuild -ta xerces-c-src_2_8_0.tar.gz 
    3. Instale os pacotes xerces-c e xerces-c-devel
  • cURL: curl e curl-devel
  • LibZip:
    1. Baixe a última versão do site
    2. Descompacte e entre no diretório
    3. Siga os procedimentos normais de instalação (./configure, make, su, make install)
    4. O default é instalar tudo no /usr/local/, inclusive o zip.h
  • Extras: glibc-headers para código em C

Debian 5

  • GD: libgd2-xpm, libgd2-xpm-dev
  • ZLib: zlib1g, zlib1g-dev
  • PostgreSQL: postgresql, postgresql-client, postgresql-contrib, libpq5, libpq-dev
  • Apache: apache2
  • Apache Xerces: libxerces-c28, libxerces-c2-dev
  • cURL: libcurl3, libcurl4-openssl-dev
  • LibZip: libzip1, libzip-dev
  • Boost Regexp: libboost-regex, libboost-regex-dev

TerraLib

Obtendo e compilando a TerraLib.

Procedimento usando na versão 4.2.2, mas pode ser usada em outras versões posteriores com as devidas adaptações.

Crie uma pasta projetos e crie a pasta para a TerraLib. Baixe a última TAG estável (nesse caso a 4.2.2). Use o CMake para compilar o projeto.

mkdir terralib422
cd terralib422
svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/build
svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/src
svn export https://svn.dpi.inpe.br/terralib/tags/v-4-2-2/extensions 
 
mkdir cmake && cd cmake
cmake ../build/cmake

Após gerar esse código, é necessário mudar alguns parâmetros no arquivo terralib/cmake/CMakeCache.txt. Alguns caminhos talvez precisem ser adaptados ao seu sistema:

  1. BUILD_TERRAMANAGER=ON
  2. BUILD_TERRAVIEW=OFF
  3. CMAKE_PROJECT_NAME=terralib
  4. GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff
  5. PostGIS_INCLUDE_DIR=/usr/include/pgsql
  6. SQLite_ENABLED=OFF
  7. TE_DTM_ENABLED=OFF
  8. TE_DXF_ENABLED=OFF
  9. TE_PDI_ENABLED=OFF
  10. TE_QT3_DRIVERS_ENABLED=OFF
  11. TE_QWT3_DRIVERS_ENABLED=OFF
  12. TE_SPL_ENABLED=OFF
  13. TE_STAT_ENABLED=OFF
  14. ZLIB_LIBRARIES:FILEPATH=/lib64/libz.so.1

Rodar o cmake de novo:

cmake ../build/cmake

e verificar se há algum erro de compilação. No meu ambiente eu ignorei a GDAL e diversas outras libs não usadas pelo TerraOGC.

Corrigir fontes TerraLib 422

Corrigir os seguintes arquivos da TerraLib 4.2.2:

Inserir a tag:

#include <unistd.h> 

em src/terralib/kernel/TeConnectionPool.cpp e src/terralib/kernel/yyTemporal.cpp

Trocar o EPSG no arquivo TeProjection.cpp: 4979 → 4326 (Linhas 186 e 1435)

TePostgreSQL.cpp

Corrigir a linha do arquivo TePostgreSQL.cpp:

L728:

createTable += "\"" + (*it).rep_.name_ + "\" ";

L1030:

 string q = "INSERT INTO "+tableName + " ( \""+ attrs+"\") " + " VALUES ("+values+") ";

L977:

 attrs += "\" , \"";

TePostGIS.cpp

Corrigir o arquivo TePostGIS.cpp: L334:

createTable += "\"" + (*it).rep_.name_ + "\" ";

L1484:

create = "CREATE INDEX sp_idx_" + table + " ON " + table + " USING GIST (" + column + ")";

Esta última observação parece (L1484) ser aplicável ao PostGIS 2+.

Depois é só compilar

make

TerraOGC

Obtendo e compilando o TerraOGC. Você pode baixar a versão do TerraOGC compatível com a versão do TerraLib que você usa. Para a última versão usar o trunk do SVN.

Baixa o TerraOGC

cd projetos
svn co https://svn.dpi.inpe.br/terraogc/trunk/ terraogc

Prepara a TerraLib: duas opções, mover ou linkar. Para DEV melhor linkar.

cd terraogc
mkdir lib && cd lib
ln -s ../../terralib422/cmake/libterramanager.so .
ln -s ../../terralib422/cmake/libterralib.so .
ln -s ../../terralib422/cmake/libterralib_shp.so .

E ajusta no ~/bashrc:

export LD_LIBRARY_PATH=<your_path>projetos/terraogc/lib

Na produção, mover para lib.

Após isso, rodar o cmake para o TerraOGC. Ele será armazenado na pasta terraogc/bin, para evitar misturar com os demais pacotes de desenvolvimento.

cd terraogc/bin
mkdir cmake && cd cmake
cmake ../../build/cmake

Editar o terraogc/bin/cmake/CMakeCache.txt. Aqui são poucos parâmetros para ajuste:

  1. CURL_LIBRARY=/usr/lib64/libcurl.so.4
  2. GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff

Roda o CMake de novo e compila:

cmake ../../build/cmake
make

Após compilado, tudo fica nas subpastas do terraogc/bin/cmake/. Duas opções, mover ou linkar. Para DEV melhor linkar.

cd terraogc/lib
find ../bin/cmake -name "*.so" -exec ln -s {} . \;
cd terraogc/bin
find cmake -name "*.cgi" -exec ln -s {} . \;

Na produção, copiar ou mover para bin e lib ao invés de linkar.


Navigation