Установка полнофункционального PostGIS 2.0 на Ubuntu Linux Проблемы с GEOS/GDAL

Я работаю над запуском postgis 2.0 на Linux-сервере ubuntu-maverick-amd64 уже около недели. Я иду за растровой и топологической поддержкой.

Для настройки я использовал следующее:

sudo ./configure --with-raster --with-topology --with-jsondir=/home/zonabili/json-c-0.9

Файл конфигурации ниже описывает мои характеристики.

PostGIS is now configured for x86_64-unknown-linux-gnu

-------------- Compiler Info -------------
 C compiler:           gcc -g -O2
 C++ compiler:         g++ -g -O2

-------------- Dependencies --------------
 GEOS config:          /usr/local/bin/geos-config
 GEOS version:         3.3.1
 GDAL config:          /usr/bin/gdal-config
 GDAL version:         1.8.0
 PostgreSQL config:    /usr/bin/pg_config
 PostgreSQL version:   PostgreSQL 9.1.2
 PROJ4 version:        47
 Libxml2 config:       /usr/bin/xml2-config
 Libxml2 version:      2.7.7
 JSON-C support:       Yes
 PostGIS debug level:  0
-------------- Extensions --------------
 PostGIS Raster:       0.1.6d
 PostGIS Topology

-------- Documentation Generation --------
 xsltproc:             /usr/bin/xsltproc
 xsl style sheets:
 dblatex:              /usr/bin/dblatex
 convert:              /usr/bin/convert

Мне удалось запустить make и sudo make install со старыми (и бесполезными для новых функций) версиями gdal и geos. Таким образом, я предполагаю, что проблема связана с моей установкой GEOS или GDAL. Для моей версии Linux нет загружаемого пакета 3.3.1, поэтому мне пришлось собирать из исходного кода, и я, вероятно, испортил это, поскольку я не привык это делать, хотя я следовал инструкциям, приведенным на веб-сайт и скачал tar-файл. Я не отклонялся от инструкций, кроме перехода в каталог для настройки make и установки. Я сделал все, что было явно указано, что я должен сделать. Я не получил сообщения о том, что он собран правильно, когда я его построил, поэтому я думаю, что что-то пошло не так, поскольку я получил следующие ошибки ближе к концу моей неудачной сборки postgis:

make[2]: Leaving directory `/home/zonabili/postgis-2.0.0SVN/raster/rt_pg'
make -C loader
make[2]: Entering directory `/home/zonabili/postgis-2.0.0SVN/raster/loader'
/bin/bash ../..//libtool --mode=link gcc -g -O2  -fPIC -DPIC  -Wall -Wmissing-pr
ototypes -I../rt_core -I/home/zonabili/postgis-2.0.0SVN/liblwgeom  -I/usr/includ
e/gdal -I/usr/local/include raster2pgsql.o ../rt_core/librtcore.a ../rt_core/lib
rtcore.a /home/zonabili/postgis-2.0.0SVN/liblwgeom/.libs/liblwgeom.a -L/usr/lib
-lgdal1.8.0 -L/usr/local/lib -lgeos_c -lm -o raster2pgsql
gcc -g -O2 -fPIC -DPIC -Wall -Wmissing-prototypes -I../rt_core -I/home/zonabili/
postgis-2.0.0SVN/liblwgeom -I/usr/include/gdal -I/usr/local/include raster2pgsql
.o -o raster2pgsql  ../rt_core/librtcore.a /home/zonabili/postgis-2.0.0SVN/liblw
geom/.libs/liblwgeom.a -L/usr/lib -lgdal1.8.0 -L/usr/local/lib -lgeos_c -lm
/home/zonabili/postgis-2.0.0SVN/liblwgeom/.libs/liblwgeom.a(lwgeom_geos.o): In f
unction `LWGEOM2GEOS':
/home/zonabili/postgis-2.0.0SVN/liblwgeom/lwgeom_geos.c:319: undefined reference
 to `GEOSGeom_createEmptyPolygon'
/home/zonabili/postgis-2.0.0SVN/liblwgeom/.libs/liblwgeom.a(lwgeom_geos.o): In f
unction `lwgeom_sharedpaths':
/home/zonabili/postgis-2.0.0SVN/liblwgeom/lwgeom_geos.c:1024: undefined referenc
e to `GEOSSharedPaths'
/home/zonabili/postgis-2.0.0SVN/liblwgeom/.libs/liblwgeom.a(lwgeom_geos.o): In f
unction `lwgeom_snap':
/home/zonabili/postgis-2.0.0SVN/liblwgeom/lwgeom_geos.c:961: undefined reference
to `GEOSSnap'
v collect2: ld returned 1 exit status
make[2]: *** [raster2pgsql] Error 1
make[2]: Leaving directory `/home/zonabili/postgis-2.0.0SVN/raster/loader'
make[1]: *** [rtloader] Error 2
make[1]: Leaving directory `/home/zonabili/postgis-2.0.0SVN/raster'
make: *** [all] Error 1

Модуль JSON-C также был проблемой, так как все, что, по их словам, нужно было сделать с ним, это распаковать его и /.configure сделать. но я чувствую, что, вероятно, мне нужно сделать больше.

Я действительно расстраиваюсь из-за этого, потому что чувствую, что я так близко, но продолжаю сталкиваться с непреодолимыми препятствиями, когда я понятия не имею, что делать.

Я был бы очень признателен всем, кто мог бы помочь исправить эти вопиющие ошибки и помочь мне пройти этот поистине адский процесс установки! Я был бы готов удалить все и начать с самого начала, хотя на самом деле я не знаю, как удалить гео, потому что мне пришлось создавать их из исходного кода, а не с помощью apt-get!

Я также новичок в Linux (я, наконец, только что понял, как установить postgis 2.0 на свой ноутбук с Windows!), поэтому, пожалуйста, будьте как можно более описательными.

Заранее спасибо, так как это было огромной головной болью для меня!


person THX1138    schedule 25.12.2011    source источник
comment
Вы можете получить дополнительную помощь по этому вопросу на gis.stackexchange.com. Там уже есть несколько вопросов и ответов PostGIS о PostGIS 2.0.   -  person RyanKDalton    schedule 26.12.2011


Ответы (1)


  • Во-первых: обычно выполняются ./configure и make от имени обычного пользователя, а финал make install выполняется только от имени пользователя root. (это позволит избежать загрязнения каталога сборки файлами со странным владельцем)
  • во-вторых: версия postgis-2.0, которую вы собираетесь создать, все еще находится в разработке. Вы всегда должны ожидать (незначительные) ошибки сборки.
  • third: (the good news) I managed to get it compiled, but I first had to configure&build&install
    • geos-3.3.1
    • проект-4.7.0
    • json-c-0.9
    • гдал-1.8.1

Впоследствии геос-2.0СВН был построен с:

PROG=postgis
#VERSION=1.5.4SVN
VERSION=2.0.0SVN

./configure --prefix=/opt/${PROG} \
    --with-projdir=/opt/proj \
    --with-geosconfig=/opt/geos/bin/geos-config     \
    --with-jsondir=/opt/json-c      \
    --with-gdalconfig=/opt/gdal/bin/gdal-config     \
    --with-raster --with-topology

make

make check

sudo make install

Была одна небольшая проблема с предварительной обработкой *.sql.in через gcc (гадость), которую можно (временно) обойти, закомментировав одну строку (@linenumber 91)

## SQL objects deps here # comment out next line...
#$(SQL_OBJS): ../../postgis/sqldefines.h

в файле raster/rt_pg/Makefile.in (конечно, до ./configure)

person wildplasser    schedule 26.12.2011
comment
Спасибо, это очень полезно! Один вопрос: в документации postgis указано, что параметр --prefix в настоящее время не работает, поэтому его можно установить только в каталог postgres. Если вы устанавливаете postgis в свой собственный каталог, он по-прежнему работает правильно, когда вы добавляете функции postgis sql в базу данных? Кроме того, скажем, я хочу удалить postgis и все его зависимости. Могу ли я просто удалить папку opt/{program} для каждой зависимости, чтобы выполнить это, или нужно сделать что-то еще? - person THX1138; 27.12.2011
comment
Я не знаю, исправлена ​​ли установка в поддеревьях postgres в версии 2.0; может быть. Удаление WRT: есть несколько скриптов для удаления postgis-расширений из каталогов, где-то в .../share или .../contrib, IIRC. Наиболее надежным является удаление или переименование всех установочных каталогов, а затем начало настройки, компиляции и установки postgres с нуля. - person wildplasser; 28.12.2011