====== 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 [[http://www.nih.at/libzip/index.html|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 [[http://download.opensuse.org/repositories/Application:/Geo/|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:
- Baixe a versão 2.8.0 do [[http://xerces.apache.org/xerces-c/|site]]
- Para criar os pacotes use o comando:
# rpmbuild -ta xerces-c-src_2_8_0.tar.gz
- Instale os pacotes xerces-c e xerces-c-devel
* cURL: curl e curl-devel
* LibZip:
- Baixe a última versão do [[http://www.nih.at/libzip/index.html|site]]
- Descompacte e entre no diretório
- Siga os procedimentos normais de instalação (./configure, make, su, make install)
- 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:
- BUILD_TERRAMANAGER=ON
- BUILD_TERRAVIEW=OFF
- CMAKE_PROJECT_NAME=terralib
- GeoTIFF_INCLUDE_DIR=/usr/include/libgeotiff
- PostGIS_INCLUDE_DIR=/usr/include/pgsql
- SQLite_ENABLED=OFF
- TE_DTM_ENABLED=OFF
- TE_DXF_ENABLED=OFF
- TE_PDI_ENABLED=OFF
- TE_QT3_DRIVERS_ENABLED=OFF
- TE_QWT3_DRIVERS_ENABLED=OFF
- TE_SPL_ENABLED=OFF
- TE_STAT_ENABLED=OFF
- 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
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=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:
- CURL_LIBRARY=/usr/lib64/libcurl.so.4
- 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.