尝试在Ubuntu 11.10上安装PostGIS 2.0.0。我基本上遵循了这里的OSGeo指令:http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1110src。我建立了GEOS 3.3.3。如果我在终端中输入geos-config --version
,则会返回3.3.3
。
我可以毫无问题地运行./configure
和make
。 ./configure
以:
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.3
GDAL config: /usr/local/bin/gdal-config
GDAL version: 1.9.0
PostgreSQL config: /usr/bin/pg_config
PostgreSQL version: PostgreSQL 9.1.3
PROJ4 version: 47
Libxml2 config: /usr/bin/xml2-config
Libxml2 version: 2.7.8
JSON-C support: no
PostGIS debug level: 0
Perl: /usr/bin/perl
--------------- Extensions ---------------
PostGIS Raster: enabled
PostGIS Topology: enabled
-------- Documentation Generation --------
xsltproc: /usr/bin/xsltproc
xsl style sheets:
dblatex:
convert:
mathml2.dtd: http://www.w3.org/Math/DTD/mathml2/mathml2.dtd
一切看起来都不错吧?但这是问题所在。当我运行make test
时,构建在最后会失败:
Creating spatial db postgis_reg
createlang: language "plpgsql" is already installed in database "postgis_reg"
Preparing spatial db postgis_reg
Something went wrong during db initialization (core module).
For details, check /tmp/pgis_reg/regress_log
make[1]: *** [check] Error 1
make[1]: Leaving directory `/home/anthony/Downloads/postgis-2.0.0/regress'
make: *** [check] Error 1
内部/tmp/pgis_reg/regress_log
是:
SET
BEGIN
psql:/home/anthony/Downloads/postgis-2.0.0/regress/00-regress-install/share/contrib/postgis/postgis.sql:69: ERROR: could not load library "/home/anthony/Downloads/postgis-2.0.0/regress/00-regress-install/lib/postgis-2.0.so": /home/anthony/Downloads/postgis-2.0.0/regress/00-regress-install/lib/postgis-2.0.so: undefined symbol: GEOSRelatePatternMatch
我试图忽略这个问题然后继续运行sudo make install
但是当我使用psql -d infinitydb -f postgis.sql
设置数据库时,我遇到了类似的问题:
SET
BEGIN
psql:postgis.sql:69: ERROR: could not load library "/usr/lib/postgresql/9.1/lib/postgis-2.0.so": /usr/lib/postgresql/9.1/lib/postgis-2.0.so: undefined symbol: GEOSRelatePatternMatch
我在网上四处看看,找到了另外一个遇到GEOSRelatePatternMatch
问题的人,但他的安装是由多个GEOS安装的。据我所知,我只有一个。有什么想法吗?
答案 0 :(得分:5)
我认为这是因为postgis认为图书馆位于服务器上的不同位置,然后才是实际存在的。我从Ubuntu GIS获得的包有同样的错误。它们被安装到/ usr / lib,但由于某种原因postgis在/ usr / local / lib中寻找它们。无论哪种方式,我运行'ldconfig'并再次运行测试,它工作得很好。
答案 1 :(得分:4)
PostGIS正在尝试从不同的地理库加载符号,然后加载编译的符号。在您的系统上搜索 geos ,将其全部删除并重新编译。
答案 2 :(得分:0)
我在写这些说明的过程中遇到了这个问题,并submitted a bug为此。我已经尝试修复它,但放弃了,因此make test
有一个已知的限制。 (我很想知道测试的问题并重新打开票证,那里有任何指针。可能与Makefile有关,因为它将GEOS版本与GDAL混合。)
尽管make test
失败,但您的安装应该没有此问题,因此我将继续执行后续步骤并安装。