如何在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
相关产品推荐
相关产品推荐

