Can';t在Postgresql上安装扩展

Can';t在Postgresql上安装扩展,postgresql,centos7,postgresql-extensions,Postgresql,Centos7,Postgresql Extensions,我尝试在Postgresql 12上安装semver。我已成功安装postgis,并使用以下命令在Centos 7服务器上安装pg semver(扩展): yum install pg-semver 然后我跑了 CREATE EXTENSION semver; 我得到了以下错误: 无法打开扩展名控制文件 /usr/pgsql-12/share/extension/semver.control:没有此类文件或 目录 我将所有文件从“/usr/share/pgsql/extension/”复制到

我尝试在Postgresql 12上安装semver。我已成功安装postgis,并使用以下命令在Centos 7服务器上安装pg semver(扩展):

yum install pg-semver
然后我跑了

CREATE EXTENSION semver;
我得到了以下错误:

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

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

错误:错误:无法访问文件“semver”:没有此类文件或 目录

更新(2020年2月28日):

我删除了pg semver,因为它提供了PSQL 9.2。我现在尝试使用开发者提供的文档来构建自己

我从下载了semver扩展,然后解压缩。之后,我运行以下命令:

make
并获得:

make:对于“所有”目标,没有什么可做的。 然后:

并获得:

/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--unpackage--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/'

然后:

并获得:

================删除数据库“contrib_回归”======================删除数据库 ================创建数据库“contrib_回归”======================创建数据库更改数据库 ===================安装plpgsql============================创建语言 ===================运行回归测试查询==========================测试库。。。失败(测试进程已退出 出口代码(3)

---------------1次测试中有1次失败。 导致某些测试失败的差异可以在中查看 文件“/tmp/ttt/pg semver master/regression.diff”。考试的副本 您在上面看到的摘要保存在文件中 “/tmp/ttt/pg semver master/regression.out”

make:**[installcheck]错误1

regression.out的内容:

!ok 278-次要版本检查!ok 279-功能 get\u semver\u patch()应该存在!好的,塞姆弗!ok 281-功能 get\u semver\u patch()应返回整数!ok 282-修补程序版本 检查ok 283-函数get\u semver\u prerelease()应该存在!好啊 284-塞姆弗!ok 285-函数get\u semver\u prerelease()应该返回 文本ok 286-预发布标签检查!ok 287-1.0.0应该在 范围[1.0.0,2.0.0]!ok 288-1.0.0不应在[1.0.1]范围内, 2.0.0] ! ok 289-2.0.0不应在[1.0.1,2.0.0]范围内!ok 290-1.9999.9999应在[1.0.1,2.0.0]范围内!ok 291-1000.0.0应在[1.0.0,2]范围内!ok 292-应能与 semverrange数组 ---1,2---\set ECHO none!psql:sql/semver.sql:30:错误:无法访问文件“semver”:没有这样的文件或目录


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

按照以下指南安装semver:


按照本指南安装semver:


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

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

yum install pg semver
将从EPEL库安装
semver
,EPEL库是CentOS 7附带的预打包PostgreSQL版本9.2。您安装了PostgreSQL版本12(通过自己编译或下载PGDG repo并安装
postgresql12
包)。EPEL repo附带的
semver.so
文件不兼容,因为它是根据PostgreSQL 9.2版而不是12版编译的。如果尝试将EPEL
semver.so
加载到您的v.12数据库中,您将看到:

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
的唯一方法是遵循编译步骤:

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

yum -y install postgresql12-devel
yum -y groupinstall "Development Tools"
您可能还会遇到编译问题,例如:
clang:error:unknown参数:'-flto=thin'
,因为PGDG RPM是使用
clang
编译的--您可以通过执行以下操作绕过此问题:

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

披露:我为

工作。您无法安装semver的原因有两个:

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

yum install pg semver
将从EPEL库安装
semver
,EPEL库是CentOS 7附带的预打包PostgreSQL版本9.2。您安装了PostgreSQL版本12(通过自己编译或下载PGDG repo并安装
postgresql12)<
make
make install
make installcheck
psql -c "CREATE EXTENSION semver;"
yum -y install postgresql12-devel
yum -y groupinstall "Development Tools"
with_llvm=no make -e
with_llvm=no make -e install
with_llvm=no make -e installcheck
psql -c "create extension semver"