You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Postgres Docker容器中安装pg_repack?编译链接报错求助

解决Postgres Docker容器中pg_repack编译链接错误的问题

你在构建自定义Postgres 16 Docker容器时,plpython3u安装正常,但pg_repack编译阶段出现链接错误,提示找不到-lzstd、-llz4、-lz、-lreadline这些库文件。

错误原因

编译pg_repack时需要依赖这些压缩和终端交互相关的系统库的开发包,你的Dockerfile中未安装这些依赖,导致链接器无法找到对应的库文件。

修正后的Dockerfile

FROM postgres:16

RUN apt-get update && apt-get install -y \
    postgresql-server-dev-16 \
    build-essential \
    libpq-dev \
    wget \
    make \
    gcc \
    postgresql-plpython3-16 \
    # 添加缺失的依赖开发包
    libzstd-dev \
    liblz4-dev \
    zlib1g-dev \
    libreadline-dev

RUN wget https://github.com/reorg/pg_repack/archive/refs/tags/ver_1.5.0.tar.gz \
    && tar zxvf ver_1.5.0.tar.gz \
    && cd pg_repack-ver_1.5.0 \
    && make \
    && make install

RUN apt-get remove -y wget build-essential postgresql-server-dev-16 gcc \
    && apt-get autoremove -y \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

修改说明

  • 在第一个apt-get install步骤中添加了四个缺失的依赖开发包:
    • libzstd-dev:提供zstd压缩库的开发文件
    • liblz4-dev:提供lz4压缩库的开发文件
    • zlib1g-dev:提供zlib压缩库的开发文件
    • libreadline-dev:提供readline终端交互库的开发文件
  • 这些包会在编译阶段被链接器调用,解决找不到库的问题
  • 后续的清理步骤仍然可以正常移除不再需要的编译工具,不会影响已安装的pg_repack功能

内容的提问来源于stack exchange,提问作者Sturm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:40:37