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

在Alpine Docker的PostgreSQL 16中安装set_user扩展遇错求助

解决Alpine Linux容器中PostgreSQL 16编译set_user扩展的pgxs.mk缺失问题

问题原因

你遇到的pgxs.mk: No such file or directory错误,是因为仅安装postgresql16包只包含PostgreSQL的运行环境,编译PostgreSQL扩展所需的开发依赖包未安装。pgxs是PostgreSQL扩展构建工具集,对应的开发包在Alpine中是postgresql16-dev。

修复步骤

1. 安装编译依赖包

如果当前处于postgres用户身份,先执行exit回到root用户,再运行:

apk add postgresql16-dev make gcc musl-dev
  • postgresql16-dev:提供pgxs工具集和编译扩展所需的头文件
  • make、gcc、musl-dev:编译C语言扩展必需的基础编译工具链

2. 重新编译安装set_user扩展

进入容器内的set_user目录,执行编译安装命令:

make
make install

优化后的完整操作流程(可选)

为简化后续操作,推荐用更清晰的容器操作方式:

  • 拉取指定版本Alpine镜像:
docker pull alpine:latest
  • 运行容器并命名,避免使用冗长的容器ID:
docker run -itd --name pg16-alpine alpine:latest sh
  • 进入容器:
docker exec -it pg16-alpine sh
  • 一次性安装所有必需组件:
apk add postgresql16 postgresql16-dev make gcc musl-dev git
  • 初始化并启动PostgreSQL:
mkdir /run/postgresql && chown postgres:postgres /run/postgresql/
su postgres
mkdir /var/lib/postgresql/data && chmod 0700 /var/lib/postgresql/data
initdb -D /var/lib/postgresql/data
pg_ctl start -D /var/lib/postgresql/data
  • 直接克隆set_user代码到容器内:
git clone https://github.com/pgaudit/set_user.git
cd set_user
make && make install

验证安装结果

进入PostgreSQL命令行,执行以下命令确认扩展可用:

psql
CREATE EXTENSION set_user;

无报错则说明扩展安装成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:24:56