====== 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.