【问题标题】:PostGIS extension undefined symbol: GEOSCoordSeq_getXYPostGIS 扩展未定义符号:GEOSCoordSeq_getXY
【发布时间】:2020-05-01 00:59:53
【问题描述】:

我正在尝试在 centos7 上的 postgresql12 上创建 postgis 3.0 扩展(两者都是使用 yum 本机 rpms 安装的)

yum install postgis30_12.x86_64

但我在使用 GEOS 时遇到了不同的错误。目前我得到的错误是

postgres=# create extension postgis; 

错误:无法加载库 “/usr/pgsql-12/lib/postgis-3.so”:/usr/pgsql-12/lib/postgis-3.so: 未定义符号:GEOSCoordSeq_getXY

geos-config --version 3.8.0

【问题讨论】:

  • 你可以添加你在 CentOS 中安装扩展的命令吗?
  • yum install postgis30_12.x86_64
  • 您可能安装了旧版本的geos 或多个版本。你能确定你只安装了最新的吗?
  • 我已删除所有 geos 安装并仅安装了最新的 3.8,然后尝试安装 postgis 但仍然出现相同的错误

标签: postgresql postgis postgresql-12 postgis-installation


【解决方案1】:

您使用的 PostGIS 二进制文件是使用与已安装版本不兼容的 GEOS 版本构建的。您必须安装不同的 GEOS 库或不同的 PostGIS。

通常情况下,这种不兼容应该通过使用不同的库版本而变得明显。 GEOS 在这里似乎很草率。

【讨论】:

  • 我已经根据 postgis 文档安装了 geos 3.8,postgis 3.0 最好与 geos 3.8 一起使用。现在的问题我不知道 postgis30_12.x86_64 是用哪个 geos 版本构建的。
  • 文档可能谈到从源代码安装。您可能需要进行试验才能找到合适的版本。通常从同一来源获取两个安装包是个好主意。
  • 我已经从机器上删除了所有 geos 并尝试以相同的方式从 yum 安装 postgis,以便从 yum 获取 geos 作为依赖项而不是单独安装它,它要求我安装 geos38 和最终得到同样的错误。我尝试使用 geos 3.5、3.7 和 3.6 也没有运气。我现在被屏蔽了。
  • 你是否使用了 PGDG 包?
  • 是的。由于某种原因,libgeos_c.so 在新的 geos 安装后没有被覆盖/使用
【解决方案2】:

我已经通过运行 ldd libgeos_c.so.1 来查找 postgresql12 正在使用哪个并手动将其替换为安装 geos38 并且创建扩展成功后出现的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-14
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多