我尝试在我的Postgresql 12上安装semver。我成功安装了postgis,并使用以下命令在Centos 7服务器上安装pg-semver(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”:没有此类文件或目录
更新(28.02.2020):
我删除了pg-semver,因为它提供了PSQL 9.2。我现在尝试使用开发人员提供的文档来构建自身。
我从https://github.com/theory/pg-semver/archive/master.zip下载了semver扩展名,然后解压缩了。之后,我运行以下命令:
make
并获得:
make:与“全部”目标无关。然后:
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- -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 /延期/'
然后:
make installcheck
并获得:
=============删除数据库“ contrib_regression” ============== DROP DATABASE ==============创建数据库“ contrib_regression” ===============创建数据库ALTER DATABASE =============安装plpgsql ============ ==创建语言===============运行回归测试查询==============测试基础...失败(测试过程以退出代码3退出)
--------------- 1个测试中有1个失败。
导致某些测试失败的差异可以在文件“ /tmp/ttt/pg-semver-master/regression.diffs”中查看。您在上面看到的测试摘要的副本保存在文件“ /tmp/ttt/pg-semver-master/regression.out”中。
制作:*** [installcheck]错误1
return.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 ---- \ set ECHO none!psql:sql / semver.sql:30:错误:无法访问文件“ semver”:没有此类文件或目录
/ usr / pgsql-12 / lib /中没有semver.so,/ usr / lib64 / pgsql /中没有semver.so,但是它也适用于9.2版?
无法安装的原因有semver
两个:
您收到错误could not access file "semver": No such file or directory
是因为您没有复制/usr/lib64/pgsql/semver.so
到/usr/pgsql-12/lib
。但是,由于以下第二个原因,您不能简单地将其复制:
yum install pg-semver
将从semver
EPEL库安装,该库是CentOS 7附带的预包装的PostgreSQL版本9.2。您安装了PostgreSQL版本12(可以自己编译或下载PGDG存储库并安装postgresql12
软件包)。semver.so
EPEL存储库随附的文件不兼容,因为它是根据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
是按照文档中详细介绍的编译步骤进行操作:
make
make install
make installcheck
psql -c "CREATE EXTENSION semver;"
如果尚未这样做(并且已通过PGDG RPM安装了postgresql 12),则需要执行以下操作才能下载和编译:
yum -y install postgresql12-devel
yum -y groupinstall "Development Tools"
您可能还会遇到编译问题,例如:clang: error: unknown argument: '-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"
披露:我为EnterpriseDB(EDB)工作
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句