无法在Postgresql上安装扩展

编程入门 行业动态 更新时间:2024-10-25 00:33:39
本文介绍了无法在Postgresql上安装扩展的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我尝试在我的Postgresql 12上安装semver。我成功安装了postgis,并使用以下命令安装pg-semver( semver 扩展名):

I try to install semver on my Postgresql 12. I installed postgis successfully and used following command to install pg-semver (semver extension) on my Centos 7 server:

yum install pg-semver

然后我跑了

CREATE EXTENSION semver;

我遇到以下错误:

无法打开扩展控制文件 /usr/pgsql-12/share/extension/semver.control:没有这样的文件或目录

couldn't open extension control file /usr/pgsql-12/share/extension/semver.control : No such file or directory

我将所有文件从 / usr / share / pgsql / extension /复制到 / usr / pgsql-12 / share / extension。现在我得到以下错误:

I copied all files from "/usr/share/pgsql/extension/" to "/usr/pgsql-12/share/extension". Now I'm getting following error:

错误:错误:无法访问文件 semver:没有这样的文件或目录

ERROR: ERROR: could not access file "semver": No such file or directory

更新(28.02.2020):

我删除了pg-semver,因为它提供了PSQL 9.2。我现在尝试使用开发人员提供的文档进行构建。

I removed pg-semver because it delivers for PSQL 9.2. I try to now build itself by using the documentation which developer provided.

我从 github/theory/pg-semver/archive/master.zip ,然后解压缩。之后,我运行以下命令:

I downloaded the semver extension from github/theory/pg-semver/archive/master.zip and then unzipped. After that I run following command:

make

并获得:

make:与全部目标无关。 然后:

make: There is nothing to do for the "all" target. then:

make install

并获得:

/ bin / sh / usr /lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./semver.control'/ usr / share / pgsql / extension /'/ bin / sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./sql/semver--0.20.0.sql ./sql/ semver--未打包--0.2.1.sql ./sql/semver--0.20.0--0.21.0.sql ./sql/semver--0.12.0--0.13.0.sql ./sql/semver--0.3.0--0.4.0.sql ./sql/semver--0.16.0--0.17.0.sql ./sql/semver--0.13。 0--0.15.0.sql ./sql/semver--0.11.0--0.12.0.sql ./sql/semver--0.2.4--0.3.0.sql ./sql/ semver--0.2.1--0.2.4.sql ./sql/semver--0.5.0--0.10.0.sql ./sql/semver--0.10.0--0.11.0。 sql ./sql/semver.sql ./sql/semver--0.17.0--0.20.0.sql ./sql/semver--0.15.0--0.16.0.sql '/ usr / share / pgsql / extension /' / bin / sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 755 src / semver.so'/ usr / lib64 / pgsql /'/ bin / sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./doc/semver.mmd'/ usr / share / doc / pgsql / extension /'

/bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./semver.control '/usr/share/pgsql/extension/' /bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./sql/semver--0.20.0.sql ./sql/semver--unpackaged--0.2.1.sql ./sql/semver--0.20.0--0.21.0.sql ./sql/semver--0.12.0--0.13.0.sql ./sql/semver--0.3.0--0.4.0.sql ./sql/semver--0.16.0--0.17.0.sql ./sql/semver--0.13.0--0.15.0.sql ./sql/semver--0.11.0--0.12.0.sql ./sql/semver--0.2.4--0.3.0.sql ./sql/semver--0.2.1--0.2.4.sql ./sql/semver--0.5.0--0.10.0.sql ./sql/semver--0.10.0--0.11.0.sql ./sql/semver.sql ./sql/semver--0.17.0--0.20.0.sql ./sql/semver--0.15.0--0.16.0.sql '/usr/share/pgsql/extension/' /bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 755 src/semver.so '/usr/lib64/pgsql/' /bin/sh /usr/lib64/pgsql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./doc/semver.mmd '/usr/share/doc/pgsql/extension/'

然后:

make installcheck

并获得:

===============删除数据库 contrib_regression == ============删除数据库 ==============创建数据库 contrib_regression ============== =创建数据库ALTER DATABASE =============安装plpgsql =============创建语言 ===== ==========运行回归测试查询==============测试基础...失败(测试过程以退出代码3退出)

============== dropping database "contrib_regression" ============== DROP DATABASE ============== creating database "contrib_regression" ============== CREATE DATABASE ALTER DATABASE ============== installing plpgsql ============== CREATE LANGUAGE ============== running regression test queries ============== test base ... FAILED (test process exited with exit code 3)

导致某些测试失败的错误,可以在文件中查看 /tmp/ttt/pg-semver-master/regression.diffs 。您在上面看到的测试摘要的副本保存在文件 /tmp/ttt/pg-semver-master/regression.out中。

The differences that caused some tests to fail can be viewed in the file "/tmp/ttt/pg-semver-master/regression.diffs". A copy of the test summary that you see above is saved in the file "/tmp/ttt/pg-semver-master/regression.out".

make:*** [installcheck]错误1

make: *** [installcheck] Error 1

regression.out的内容:

the content of regression.out:

......!好的278-次要版本检查!好的279-函数 get_semver_patch()应该存在!好的280-semver!好的281-函数 get_semver_patch()应该返回整数!好的282-补丁版本检查!好的283-函数get_semver_prerelease()应该存在!好的 284-semver!好的285-函数get_semver_prerelease()应该返回文本!好的286-预发行标签检查!好的287-1.0.0应该在范围内[1.0.0,2.0.0]!好的288-1.0.0不应在[1.0.1, 2.0.0]范围内!好的289-2.0.0不应在[1.0.1,2.0.0)范围内!好的290-1.9999.9999应该在[1.0.1,2.0.0)范围内!好的291-1000.0.0应该在[1.0.0,)范围内!好的292-应该能够使用 semverranges数组 --- 1,2 ---- \设置ECHO none! psql:sql / semver.sql:30:错误:无法访问文件 semver:没有这样的文件或目录

...... ! ok 278 - minor version check ! ok 279 - Function get_semver_patch() should exist ! ok 280 - semver ! ok 281 - Function get_semver_patch() should return integer ! ok 282 - patch version check ! ok 283 - Function get_semver_prerelease() should exist ! ok 284 - semver ! ok 285 - Function get_semver_prerelease() should return text ! ok 286 - prerelease label check ! ok 287 - 1.0.0 should be in range [1.0.0, 2.0.0] ! ok 288 - 1.0.0 should not be in range [1.0.1, 2.0.0] ! ok 289 - 2.0.0 should not be in range [1.0.1, 2.0.0) ! ok 290 - 1.9999.9999 should be in range [1.0.1, 2.0.0) ! ok 291 - 1000.0.0 should be in range [1.0.0,) ! ok 292 - Should be able to work with arrays of semverranges --- 1,2 ---- \set ECHO none ! psql:sql/semver.sql:30: ERROR: could not access file "semver": No such file or directory

/ usr / pgsql-12 / lib /中没有semver.so,/ usr / lib64 / pgsql /中有一个semver.so,但它也适用于9.2版?

There is no semver.so in /usr/pgsql-12/lib/, there is a semver.so in /usr/lib64/pgsql/ but it's also for version 9.2 ?

推荐答案

无法安装 semver 的原因有两个:

The reason why you are unable to install semver is twofold:

您收到错误无法访问文件 semver:没有这样的文件或目录,因为您没有复制 / usr / lib64 / pgsql /semver.so 到 / usr / pgsql-12 / lib 。但是,由于以下第二个原因,您不能简单地复制该副本:

You are getting the error could not access file "semver": No such file or directory because you didn't copy /usr/lib64/pgsql/semver.so to /usr/pgsql-12/lib. However, you can't simply copy that over because of this following second reason:

yum install pg-semver 将从EPEL库安装 semver ,该库是CentOS 7附带的预包装的PostgreSQL 9.2版。您安装了PostgreSQL 12版(可以自己编译或下载) PGD​​G存储库并安装 postgresql12 软件包)。 EPEL存储库随附的 semver.so 文件不兼容,因为它是根据PostgreSQL 9.2版而不是版本12编译的。如果尝试加载EPEL semver.so 到您的v.12数据库中,您将看到:

yum install pg-semver will install semver from the EPEL library, which is the pre-packaged PostgreSQL version 9.2 that is shipped with CentOS 7. You installed PostgreSQL version 12 (either by compiling it yourself or downloading the PGDG repo and installing the postgresql12 package). The semver.so file that is shipped with the EPEL repo is not compatible, as it was compiled against PostgreSQL version 9.2, not version 12. If you attempt to load the EPEL semver.so into your v.12 database, you will see:

postgres=# create extension semver; ERROR: incompatible library "/usr/pgsql-12/lib/semver.so": version mismatch DETAIL: Server is version 12, library is version 9.2.

因此,这是安装 semver 是按照编译步骤文档中详细介绍的:

Therefore, the only way for you to install semver is by following the compilation steps detailed in the documentation:

make make install make installcheck psql -c "CREATE EXTENSION semver;"

如果您尚未这样做(并且已通过PGDG RPM安装了postgresql 12),则需要执行以下操作以下载和编译:

If you have not done so already (and you installed postgresql 12 via PGDG RPM), you will need to do the following in order to download and compile:

yum -y install postgresql12-devel yum -y groupinstall "Development Tools"

您可能还会遇到编译问题,例如: clang:错误:未知参数:'-flto = thin',因为PGDG RPM是使用 clang 编译的-您可以通过执行以下操作来绕过它:

You may also run into issues with compilation, like: clang: error: unknown argument: '-flto=thin' because the PGDG RPM was compiled with clang -- you can bypass that by doing:

with_llvm=no make -e with_llvm=no make -e install with_llvm=no make -e installcheck psql -c "create extension semver"

披露:我为 EnterpriseDB(EDB)

更多推荐

无法在Postgresql上安装扩展

本文发布于:2023-10-16 00:09:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1495899.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Postgresql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!