我尝试将plpython3
扩展添加到我的timescaledb
/postgres
镜像中(基于Linux Alpine系统):
FROM timescale/timescaledb:0.9.0-pg10
RUN set -ex \
&& apk add --no-cache --virtual .plpython3-deps --repository http://nl.alpinelinux.org/alpine/edge/testing \
postgresql-plpython3
当我尝试创建扩展时,我遇到了以下错误:
postgres=# CREATE EXTENSION plpython3u;
ERROR: could not open extension control file "/usr/local/share/postgresql/extension/plpython3u.control": No such file or directory
但是当我在容器中搜索文件时,我会发现它们在不同的目录中:
/ # find / -name '*plpy*'
/usr/lib/postgresql/plpython3.so
/usr/share/postgresql/extension/plpython3u.control
/usr/share/postgresql/extension/plpython3u--1.0.sql
/usr/share/postgresql/extension/plpython3u--unpackaged--1.0.sql
我应该如何将postgresql-plpython3
安装到不同的目录或配置postgres
以识别我的添加扩展?
更新
当我只是将文件mv
到/usr/local/share/postgresql/extension
时,我会收到错误:
postgres=# CREATE EXTENSION plpython3u;
ERROR: could not access file "$libdir/plpython3": No such file or directory
更新2
$libdir
的问题在于 pg_config --pkglibdir
指向 /usr/local/lib/postgresql
,但是 plpython3.so
却在 /usr/lib/postgresql
中。当我将所有内容移动到相应的 /usr/local
目录中时,就可以成功创建扩展程序。
这导致了一个问题,我希望找到答案。如何将 postgresql-plpython3
安装到 /usr/local/...
而不是 /usr/...
?
使用try it
RUN sed -i '/PKGLIBDIR = /usr/local/lib/postgresql/c/PKGLIBDIR = /usr/share/postgresql' /usr/local/bin/pg_config
第二个选项创建半链接
RUN ln -s /usr/share/postgresql/extension/plpython3u.control /usr/local/share/postgresql/extension/plpython3u.control
- Adiii