Установка полнофункциональной PostGIS 2.0 в Ubuntu Linux GEOS / GDAL - PullRequest
5 голосов
/ 25 декабря 2011

Я работаю над тем, чтобы запустить 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, поэтому мне пришлось собирать его из исходного кода, и я, вероятно, испортил его, поскольку я не привык к этому, хотя я следовал инструкциям, приведенным на веб-сайте , и скачал тарфайл. Я не отклонялся от инструкций, кроме как перейти в каталог для настройки make и install. Я сделал все, что прямо заявлено, что я должен сделать. Я не получил сообщение о том, что он собран правильно, когда я его создавал, поэтому я думаю, что что-то пошло не так, как я получил следующие ошибки в конце моей неудачной сборки 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!), Поэтому, пожалуйста, будьте как можно более информативными.

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

1 Ответ

4 голосов
/ 26 декабря 2011
  • Во-первых: обычно ./configure и make выполняются от имени обычного пользователя, а финал make install - от имени пользователя root.(это позволит избежать загрязнения директории сборки файлами со странным владельцем)
  • секунда: постгис-2.0, который вы намереваетесь собрать, - это версия, которая все еще находится в разработке.Вы всегда должны ожидать (незначительных) ошибок сборки.
  • третий: (хорошие новости) Мне удалось его скомпилировать, но сначала мне нужно было настроить, собрать и установить
    • geos-3.3.1
    • proj-4.7.0
    • json-c-0.9
    • gdal-1.8.1

geos-2.0SVNвпоследствии был построен с:

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 (yuck), которую можно (временно) обойти, закомментировав одну строку (@linenumber 91)

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

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

...