当前位置: 首页 > 知识库问答 >
问题:

将plpython3扩展添加到Postgres/timescaledb Alpine Docker映像

凌炜
2023-03-14

我尝试将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/本地/share/postgresql/扩展名我得到的错误:

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。因此/usr/lib/postgresql中。当我将所有内容移动到相应的/usr/local目录时,我可以成功创建扩展。

这就引出了我希望找到答案的问题。如何将postgresql-plpython3安装到/usr/local/ 而不是/usr/


共有1个答案

岳硕
2023-03-14

我相当肯定,如果您使用预构建的软件包,您将被硬编码的安装路径所困扰。

解决问题的最简单方法是在安装后创建符号链接:

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 \
    && ln -s /usr/lib/postgresql/plpython3.so /usr/local/lib/postgresql/plpython3.so \
    && ln -s /usr/share/postgresql/extension/plpython3u.control /usr/local/share/postgresql/extension/plpython3u.control \
    && ln -s /usr/share/postgresql/extension/plpython3u--1.0.sql /usr/local/share/postgresql/extension/plpython3u--1.0.sql \
    && ln -s /usr/share/postgresql/extension/plpython3u--unpackaged--1.0.sql /usr/local/share/postgresql/extension/plpython3u--unpackaged--1.0.sql
 类似资料:
  • 问题内容: 我正在使用这个官方的php Docker映像:[https]( https://github.com/docker- library/php/blob/76a1c5ca161f1ed6aafb2c2d26f83ec17360bc68/7.1/alpine/Dockerfile) //github.com/docker- library/php/blob/76a1c5ca161f1ed6

  • 问题内容: 在Postgres 9.3数据库中,我有一张表,其中一列包含JSON,如下面示例中所示的测试表所示。 JSON始终是一个包含可变数量哈希值的数组。每个哈希始终具有相同的键集。我正在尝试编写一个查询,该查询为JSON数组中的每个条目返回一行,并为每个哈希键和Things表中的ID设置列。我希望输出如下所示: 即,两行用于JSON数组中包含两项的条目。是否可以让Postgres做到这一点?

  • 我将开始使用PyQt5及其sqlite的Sql类。我想将扩展加载到sqlite中。为此,必须在运行时为sqlite启用扩展加载。在python模块sqlite3中,这是通过enable_load_扩展启用的。 在C中,句柄可以这样获得(取自https://doc.qt.io/qt-5/qsqldriver.html#handle): python的等价物是 作为旁注,在Pyside2中,handl

  • 当折叠链接已扩展为aria expanded=“true”时,我试图向父div添加一个类,但什么也没有发生。 还有jquery 我还试图通过将. info-title[aria扩展="true"]更改为[aria扩展="true"]并最接近父母来实现它,但它不起作用。

  • 问题内容: 在JSF中,我可以将Faces Servlet映射到各种URL模式。例如。 但是我想要的是将Faces Servlet映射为 无 扩展名。意思是,如果我在Web根目录中有一个页面,我想使用来请求此页面。 我看了一个问题,如何配置不带文件扩展名的JSFURL映射?这在某种程度上是可行的,但它要求我分别映射我拥有的每个文件(如果我输入错了,请更正我)。 如何将所有文件一次映射到Faces

  • 我想把下面的数组转换成一个稍微修改的对象(见下文)。我也在尝试使用扩展运算符,但还没有弄清楚如何做到这一点。我试图避免使用lodash(用于教育目的)。 null