问题
Trying to install PostGIS 2.0.0 on Ubuntu 11.10. I've basically followed the OSGeo instructions found here: http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1110src. I built GEOS 3.3.3. If I type geos-config --version into the terminal, I am returned 3.3.3.
I can run ./configure and make without issue. ./configure ends with:
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
All looks good, right? But here's the problem. When I run make test, the build fails with this at the end:
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
Inside /tmp/pgis_reg/regress_log is:
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
I've tried to ignore the issue and go forward, running sudo make install but when I get to setting up my db with psql -d infinitydb -f postgis.sql I get a similar problem:
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
I've looked around on the net, found one other person with the GEOSRelatePatternMatch problem but his was due to multiple GEOS installs. As far as I'm aware, I only have one. Any ideas?
回答1:
PostGIS is trying to load the symbols from a different geos library then the one it was compiled with. Search for geos on your system, remove them all and recompile.
回答2:
I think this is due to postgis thinking the libraries are in a different location on your server then what they actually are. I had this same error with packages I got from Ubuntu GIS. They were installed to /usr/lib, but for some reason postgis was looking for them in /usr/local/lib. Either way, I ran 'ldconfig' and ran the test again, and it worked just fine.
回答3:
I ran into that issue a while back when writing these instructions, and submitted a bug for it. I've tried fixing it, but gave up, therefore there is a known limitation for make test. (I'd be eager to figure out the problem with the test and re-open the ticket, there are any pointers out there. Probably something to do with the Makefile, as it is mixing the version of GEOS with GDAL.)
Despite the failure with make test, your install should work without this issue, so I'd continue on to the next steps and install.
来源:https://stackoverflow.com/questions/10543552/postgis-2-0-0-install-geos-issue