在 postgres 9.4.24 上安装 pg_trgm
Install pg_trgm on postgres 9.4.24
我正在尝试在使用 postgres 9.4.24 版本的 Greemplum 系统上使用相似度函数。
Greenplum 系统 运行 在 CentOS 7 集群上运行(CentOS Linux 7.9.2009 版(核心版))
我已经通过运行安装了 postgresql-contrib 包:
sudo yum install postgresql-contrib.x86_64
但是,当我 运行 在数据库上执行此命令时:
创建扩展 pg_trgm();
我得到以下信息:;
SQL Error [58P01]: ERROR: could not open extension control file "/usr/local/greenplum-db-6.13.0/share/postgresql/extension/pg_trgm.control": No such file or directory
我查看了目录,pg_trgm.control 不在那里,但自从我安装了 contrib 包后我就期待它了。
有什么我遗漏的吗?
我找到了 Greenplum 的贡献存储库并在此处下载了代码:
https://github.com/greenplum-db/gpdb/tree/master
其中包括带有所有扩展名的 contrib 目录..
然而,当我尝试 make && make install 时,出现错误:
[gpadmin@mdw pg_trgm]$ sudo make
Makefile:22: ../../src/Makefile.global: No such file or directory
Makefile:23: /contrib/contrib-global.mk: No such file or directory
make: *** No rule to make target `/contrib/contrib-global.mk'. Stop.
查看目录结构和文件,Makefile.global 不存在而 contrib-global.mk 存在但不确定路径是否正确,我可以尝试更改 Makefile 中的路径但是不确定。
这些是 Makefile 文件的内容:
# contrib/pg_trgm/Makefile
MODULE_big = pg_trgm
OBJS = trgm_op.o trgm_gist.o trgm_gin.o trgm_regexp.o $(WIN32RES)
EXTENSION = pg_trgm
DATA = pg_trgm--1.3--1.4.sql \
pg_trgm--1.3.sql pg_trgm--1.2--1.3.sql pg_trgm--1.1--1.2.sql \
pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql
PGFILEDESC = "pg_trgm - trigram matching"
REGRESS = pg_trgm pg_word_trgm pg_strict_word_trgm
REGRESS_OPTS += --init-file=$(top_srcdir)/src/test/regress/init_file
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/pg_trgm
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
我检查了 /tmp 文件夹中的代码,它在 /tmp/gpdb
下创建了结构
更新:
我确实遵循了 Bradford 的建议并且能够编译和安装,但是,当我 运行 时我得到了这个:
create extension pg_trgm
;
错误:无法打开扩展控制文件“/usr/local/greenplum-db-6.13.0/share/postgresql/extension/pg_trgm.control”:没有这样的文件或目录 (seg57 172.28.8.8:6001 pid=146663)
我 运行 手动 运行 make 和 make install:
/usr/bin/install -c -m 755 pg_trgm.so '/usr/local/greenplum-db-6.13.0/lib/postgresql/pg_trgm.so'
/usr/bin/install -c -m 644 pg_trgm.control '/usr/local/greenplum-db-6.13.0/share/postgresql/extension/'
/usr/bin/install -c -m 644 pg_trgm--1.1.sql pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql '/usr/local/greenplum-db-6.13.0/share/postgresql/extension/'
我可以看到那里的 .control 文件,所以不确定发生了什么,它似乎只复制到主机而不是段主机,这会是个问题吗?我是否需要在每个段主机上编译它?
更新:
我确实在每个网段上都安装了,现在我得到了这个:
SQL 错误 [0A000]:错误:不支持具有多个 segworker 组的查询计划
提示:可能是由读取或修改分布式 table
中的数据的函数引起的
greenplum 不支持这个扩展吗?
在高层次上,您需要下载您正在 运行ning 的 GPDB 版本的源代码。您可以通过从 GitHub 发布页面下载 tarball 或克隆存储库并签出发布标签来完成此操作。
完成后,从您安装的 GPDB 源 greenplum_path.sh
,切换到 contrib/pg_trgm
目录和 运行
USE_PGXS=true make
USE_PGXS=true make install
设置 USE_PGXS
将从 GPDB 安装中提取缺少的 Makefile。
如果 GPDB 的安装位置不属于 gpadmin
用户,那么 make install
将因权限问题而失败;使用 sudo make install
很可能会失败,因为 pg_config
不会在路径上找到。在那种情况下,我只是 运行 make -n install
然后手动 运行 以 sudo
.
为前缀的命令
以下是伪shell 会话中的所有步骤:
git clone https://github.com/greenplum-db/gpdb.git
cd gpdb
# use git checkout 6.13.0 for older versions of git
git switch --detach 6.13.0
git submodule update --init --recursive
source /usr/local/greenplum-db-6.13.0/greenplum_path.sh
cd contrib/pg_trgm
USE_PGXS=true make
USE_PGXS=true make -n install
编辑: 我应该澄清一下,我没有测试过 pg_trgm 是否可以与 GPDB 一起使用,只是它可以构建和编译。
我正在尝试在使用 postgres 9.4.24 版本的 Greemplum 系统上使用相似度函数。 Greenplum 系统 运行 在 CentOS 7 集群上运行(CentOS Linux 7.9.2009 版(核心版))
我已经通过运行安装了 postgresql-contrib 包:
sudo yum install postgresql-contrib.x86_64
但是,当我 运行 在数据库上执行此命令时: 创建扩展 pg_trgm(); 我得到以下信息:;
SQL Error [58P01]: ERROR: could not open extension control file "/usr/local/greenplum-db-6.13.0/share/postgresql/extension/pg_trgm.control": No such file or directory
我查看了目录,pg_trgm.control 不在那里,但自从我安装了 contrib 包后我就期待它了。
有什么我遗漏的吗?
我找到了 Greenplum 的贡献存储库并在此处下载了代码: https://github.com/greenplum-db/gpdb/tree/master 其中包括带有所有扩展名的 contrib 目录..
然而,当我尝试 make && make install 时,出现错误:
[gpadmin@mdw pg_trgm]$ sudo make
Makefile:22: ../../src/Makefile.global: No such file or directory
Makefile:23: /contrib/contrib-global.mk: No such file or directory
make: *** No rule to make target `/contrib/contrib-global.mk'. Stop.
查看目录结构和文件,Makefile.global 不存在而 contrib-global.mk 存在但不确定路径是否正确,我可以尝试更改 Makefile 中的路径但是不确定。
这些是 Makefile 文件的内容:
# contrib/pg_trgm/Makefile
MODULE_big = pg_trgm
OBJS = trgm_op.o trgm_gist.o trgm_gin.o trgm_regexp.o $(WIN32RES)
EXTENSION = pg_trgm
DATA = pg_trgm--1.3--1.4.sql \
pg_trgm--1.3.sql pg_trgm--1.2--1.3.sql pg_trgm--1.1--1.2.sql \
pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql
PGFILEDESC = "pg_trgm - trigram matching"
REGRESS = pg_trgm pg_word_trgm pg_strict_word_trgm
REGRESS_OPTS += --init-file=$(top_srcdir)/src/test/regress/init_file
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = contrib/pg_trgm
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif
我检查了 /tmp 文件夹中的代码,它在 /tmp/gpdb
下创建了结构更新:
我确实遵循了 Bradford 的建议并且能够编译和安装,但是,当我 运行 时我得到了这个:
create extension pg_trgm
;
错误:无法打开扩展控制文件“/usr/local/greenplum-db-6.13.0/share/postgresql/extension/pg_trgm.control”:没有这样的文件或目录 (seg57 172.28.8.8:6001 pid=146663)
我 运行 手动 运行 make 和 make install:
/usr/bin/install -c -m 755 pg_trgm.so '/usr/local/greenplum-db-6.13.0/lib/postgresql/pg_trgm.so'
/usr/bin/install -c -m 644 pg_trgm.control '/usr/local/greenplum-db-6.13.0/share/postgresql/extension/'
/usr/bin/install -c -m 644 pg_trgm--1.1.sql pg_trgm--1.0--1.1.sql pg_trgm--unpackaged--1.0.sql '/usr/local/greenplum-db-6.13.0/share/postgresql/extension/'
我可以看到那里的 .control 文件,所以不确定发生了什么,它似乎只复制到主机而不是段主机,这会是个问题吗?我是否需要在每个段主机上编译它?
更新: 我确实在每个网段上都安装了,现在我得到了这个:
SQL 错误 [0A000]:错误:不支持具有多个 segworker 组的查询计划 提示:可能是由读取或修改分布式 table
中的数据的函数引起的greenplum 不支持这个扩展吗?
在高层次上,您需要下载您正在 运行ning 的 GPDB 版本的源代码。您可以通过从 GitHub 发布页面下载 tarball 或克隆存储库并签出发布标签来完成此操作。
完成后,从您安装的 GPDB 源 greenplum_path.sh
,切换到 contrib/pg_trgm
目录和 运行
USE_PGXS=true make
USE_PGXS=true make install
设置 USE_PGXS
将从 GPDB 安装中提取缺少的 Makefile。
如果 GPDB 的安装位置不属于 gpadmin
用户,那么 make install
将因权限问题而失败;使用 sudo make install
很可能会失败,因为 pg_config
不会在路径上找到。在那种情况下,我只是 运行 make -n install
然后手动 运行 以 sudo
.
以下是伪shell 会话中的所有步骤:
git clone https://github.com/greenplum-db/gpdb.git
cd gpdb
# use git checkout 6.13.0 for older versions of git
git switch --detach 6.13.0
git submodule update --init --recursive
source /usr/local/greenplum-db-6.13.0/greenplum_path.sh
cd contrib/pg_trgm
USE_PGXS=true make
USE_PGXS=true make -n install
编辑: 我应该澄清一下,我没有测试过 pg_trgm 是否可以与 GPDB 一起使用,只是它可以构建和编译。