PostGIS 2.0.0安装GEOS问题

时间:2012-05-10 23:35:36

标签: postgresql postgis

尝试在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

我可以毫无问题地运行./configuremake./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安装的。据我所知,我只有一个。有什么想法吗?

3 个答案:

答案 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失败,但您的安装应该没有此问题,因此我将继续执行后续步骤并安装。