PostGIS错误:无法加载库“ /usr/lib/postgresql91/lib64/postgis-2.0.so”


9

操作系统为openSUSE 12.1,PostgreSQL-9.1,PostGIS-2.0。Postgre / PostGIS是从Application:Geo存储库安装的。

经过最近的更新后,当我尝试连接到数据库时,出现以下错误:

    ERROR:  could not load library "/usr/lib/postgresql91/lib64/postgis-2.0.so":
 /usr/lib/postgresql91/lib64/postgis-2.0.so: undefined symbol: pj_get_spheroid_defn

我在网上搜索了此错误(hint-1hint-2),似乎它可能与ld.so.config(或ldconfig命令)有关。但是我不知道该怎么办。


2
需要最新版本的proj(> = 4.8)。什么proj --version和/或ldd `which proj`演出?
Mike T

@MikeToews,我的proj版本是4.7.1。看来我需要更新它。
SS_Rebelious

我已经从他们的官方网站安装了proj 4.8。但是,当我执行proj --verion时,它仍然显示> Rel. 4.7.1, 23 September 2009如何将其升级到4.8。我的任何想法出来:(我使用Ubuntu 12.4感谢莫
mmrs151

Answers:


6

感谢MikeToews,我得以解决此问题。openSUSE中的PostGIS 2.0取决于libproj0并且其版本必须为> = 4.8。不知何故,软件包管理器没有通知我有关可用的新版本的信息,libproj0因此我通过Yast在“版本”标签中手动检查了较新的版本。更新后,我可以正常操作数据库。


这不是真的。
埃文·卡罗尔

0

我认为所选答案与该问题无关,

发生了什么

  1. Postgre / PostGIS是从Application:Geo存储库安装的。
  2. 操作系统是openSUSE

您安装了新版本的PostGIS,该版本是根据没有的proj版本构建的。您的项目可能由OpenSUSE提供。您需要从Application:Geo存储库安装proj 版本,或者从主线OpenSUSE存储库安装PostGIS版本。这是依赖性客户端不匹配。如果问题仍然存在,则应在SUSE中提交一个错误。

并不是说PostGIS在旧版本的proj上不起作用。它是SUSE是建设了PostGIS对新版本,所以你需要一个。

PostGIS和旧项目

从两年前提交的错误报告中

因此,PostGIS基本上也可以与较旧的Proj4版本一起使用,但是需要在编译时知道。

然后,看起来watsonta的二进制文件是针对Proj 4.8构建的,但正在针对以前的版本运行。二进制程序包中的错误或它的依赖关系很可能(proj-4.8 +是由打包程序构建的二进制 postgis 的依赖关系)。

我认为这就是问题所在。您是针对较新版本的proj构建的,而不是已安装的。将安装升级到您构建的agianst版本只是解决问题的一种方法。

您可以看到此处调用了函数,并且该函数受的保护if

#if POSTGIS_PROJ_VERSION >= 48

如果这不起作用,那么您还有另一个问题。它通过构建系统提供的一个10岁的宏


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.