错误:无法加载库“/usr/lib64/pgsql/hstore.so”:/lib64/libc.so.6:未找到版本“GLIBC_2.14”

错误:无法加载库“/usr/lib64/pgsql/hstore.so”:/lib64/libc.so.6:未找到版本“GLIBC_2.14”

我正在尝试在 Amazon Linux AMI 上运行的 PostgreSQL 数据库上启用 hstore。我已经克服了很多困难,但最终还是遇到了这个无法解决的错误:

ERROR:  could not load library "/usr/lib64/pgsql/hstore.so": /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/pgsql/hstore.so)

我运行ldd --version以获取我的 GLIBC 版本并且它返回ldd (GNU libc) 2.17

我遇到的唯一解决方案是

  1. 运行yum update,这没有多大意义,因为我的系统似乎正在运行比所需的更新的版本。

  2. 根据您系统上的版本重新编译程序glibc,我不太明白。我需要重新编译哪个程序?PostgreSQL?

这件事让我发疯了好几天,我已经陷入困境。任何帮助我都非常感谢!

答案1

错误在于hstore共享库,因此它可能是唯一需要使用 GLIBC 版本进行编译的库。您的 postgres 包中包含的库显然是使用 2.14 版编译的,而您的是 2.17 版。

通常hstore应该对更高级别的版本感到满意,但它所做的检查显然是“等于 2.14”而不是“大于或等于 2.14”。

文章PostgreSQL 功能亮点:hstore描述如何hstore从源代码安装库:

下载源代码并安装核心后,执行以下命令。

cd $PG_SOURCE_ROOT
cd contrib/hstore
make install

此时所有与 hstore 相关的库和文件都安装在 $INSTALL_FOLDER/share/extension 中。

$ ls $INSTALL_FOLDER/share/extension
hstore--1.0--1.1.sql  hstore--1.1.sql  hstore--unpackaged--1.0.sql  hstore.control

然后连接到您的 Postgres 服务器并使用 CREATE EXTENSION 命令完成 hstore 安装。

postgres=# CREATE EXTENSION hstore;
CREATE EXTENSION
postgres=# \dx hstore
                         List of installed extensions
   Name  | Version | Schema |                   Description                    
--------+---------+--------+--------------------------------------------------
 hstore | 1.1     | public | data type for storing sets of (key, value) pairs
(1 row)

使用 psql 客户端,“\dx”可以检查服务器上已安装的扩展列表。

答案2

我在 Manjaro Linux(Arch 的一个分支)上运行,在将 Postgres 从版本 10 升级到 11 后出现了这个问题。

(对于我来说,路径略有不同。我得到:could not load library "/usr/lib/postgresql/hstore.so"。)

我关注了arch wiki 关于升级 postgres 的说明,并且很快就启动并运行了。

答案3

获取较新的 hstore。所以您的 hstore 对于您运行的系统来说太旧了。或者尝试找到 compat-glibc 包进行粘合。

相关内容