CMD: ext
pig ext 查询扩展目录,安装、升级或移除主机上的 PostgreSQL 扩展软件包。它也支持 PostgreSQL 内核包。安装软件包后,按扩展要求在数据库中执行 SQL 并修改配置。
| 命令 | 描述 | 备注 |
|---|---|---|
ext list |
搜索扩展 | |
ext info |
显示扩展详细信息 | |
ext avail |
显示扩展可用性矩阵 | |
ext status |
显示主机可见的扩展文件/软件包 | 不会逐库查询 |
ext scan |
扫描已安装的控制文件/共享库 | 不会逐库查询 |
ext add |
安装扩展 | 需要 sudo 或 root 权限 |
ext rm |
移除扩展 | 需要 sudo 或 root 权限 |
ext update |
更新扩展 | 需要 sudo 或 root 权限 |
ext import |
下载扩展以供离线使用 | 需要 sudo 或 root 权限 |
ext link |
链接 PG 版本到 PATH | 需要 sudo 或 root 权限 |
ext reload |
刷新扩展目录 |
快速入门
以下示例使用已运行的 PostgreSQL 18 实例。安装与启动步骤见快速上手。
添加 PostgreSQL 仓库,查询扩展,再安装软件包:
在目标数据库中启用扩展,例如:
其他扩展见扩展列表。扩展需要预加载或额外配置时,先按 pig ext info NAME 的提示完成配置,再启用扩展。
选择 PostgreSQL 安装
-v, --version 18:指定 PostgreSQL 主版本。-p, --path /path/to/pg_config:指定一套 PostgreSQL 安装的pg_config。- 两个参数不能同时使用。省略时,PIG 尝试探测本机 PostgreSQL;自动化脚本建议显式传入
-v。
PGDG 默认路径为 EL 的 /usr/pgsql-18/bin/pg_config,以及 Debian/Ubuntu 的 /usr/lib/postgresql/18/bin/pg_config。包管理器负责解析 RPM/DEB 依赖;-y 自动确认软件包操作。
软件包与数据库操作
| 任务 | PIG 操作 | 数据库操作 |
|---|---|---|
| 安装 | ext add NAME |
按要求配置预加载并执行 CREATE EXTENSION |
| 升级 | ext update NAME |
按扩展升级说明执行 ALTER EXTENSION ... UPDATE |
| 移除 | ext rm NAME |
先在受影响数据库中移除或迁移依赖,再卸载软件包 |
| 检查 | ext status / ext scan 检查主机文件 |
查询 pg_extension 查看数据库已启用扩展 |
| 刷新目录 | ext reload 更新扩展元数据 |
无 |
pg_available_extensions 显示服务器可用的扩展,pg_extension 显示当前数据库已启用的扩展。
ext list
列出(或搜索)扩展目录中的条目。
分类筛选通过查询参数直接指定分类名实现,支持的分类包括:time, gis, rag, fts, olap, feat, lang, type, func, util, admin, stat, sec, fdw, sim, etl。
选项:
-v|--version:指定判断可用性时使用的 PG 版本;不可用的条目仍会列出--pkg:显示包名而非扩展名,仅列出主导扩展
Status 列说明:
installed:扩展已安装(绿色)available:扩展可用但未安装(黄色)not avail:扩展在当前系统不可用(红色)
可用性判断与 text/JSON/YAML 摘要使用同一平台、架构和 PostgreSQL 版本。平台有包矩阵时,
以矩阵为准,缺少对应单元格即不可用;条目没有矩阵时,沿用 RPM/DEB 版本元数据与平台例外规则。amd64/x86_64、arm64/aarch64 分别等价。macOS 的此状态只表示声明支持的 PostgreSQL 版本,
不表示存在可安装的 RPM/DEB 包。
目录计数
官网与 CLI 按全部目录记录统计,包括 pg_relation_sql 这类已打包的 SQL 工具,以及已移除扩展的保留记录。当前内嵌目录共 616 个条目。这个总数不表示每个条目都支持 CREATE EXTENSION,也不表示它们在所有平台上都可安装。
无筛选列表包含全部记录。文本行数与 JSON/YAML 的 data.count 都表示实际返回的条目数;搜索统计匹配条目,--pkg 统计主导包记录。ext avail 的全局文本摘要使用完整目录总数。ext reload 的 data.extension_count 表示实际下载目录的记录数。
计数决策说明了统一口径的原因。默认扩展目录定义在 cli/ext/assets/extension.csv。
可用 pig ext reload 命令更新到最新扩展目录,数据将下载到 ~/.pig/extension.csv;在线最新版目录同步发布于 repo.pigsty.cc/ext/data/extension.csv。
ext info
显示指定扩展的详细信息。
ext avail
显示扩展的可用性矩阵,展示扩展在不同操作系统、架构和 PostgreSQL 版本上的可用情况。
可用性矩阵会显示扩展在各个操作系统(EL8/9/10, Debian 12/13, Ubuntu 22/24/26)、架构(x86_64/aarch64)和 PostgreSQL 版本(14-18)上的可用情况。
ext status
显示所选 PostgreSQL 安装在当前主机上可见的扩展文件/软件包状态。
选项:
-c|--contrib:结果中包含 contrib 扩展
ext scan
扫描所选 PostgreSQL 安装的扩展目录。
该命令读取所选 PostgreSQL 安装目录中的控制文件及相关文件。同时按目录元数据匹配共享库名称,因此没有控制文件的条目也可以显示为已安装,
但这不意味着该条目支持 CREATE EXTENSION。
ext add
安装一个或多个 PostgreSQL 扩展。pig ext add 的同级别名包括 pig ext install、pig ext ins 与 pig ext a。顶层 pig install 也接受扩展别名和普通系统软件包。
以下别名用于选择 PostgreSQL 软件包组:
| 别名 | 软件包 |
|---|---|
pg18 |
服务端、客户端、contrib 模块与过程语言 |
pg18-server |
服务端与 contrib 模块 |
pg18-client |
客户端工具 |
pg18-devel |
开发文件 |
pg18-basic |
pg_repack、wal2json 和 pgvector |
将 18 替换为所需的大版本,也可以用 pgsql 配合 -v 18。安装特定软件包版本时,使用 NAME=VERSION,版本必须存在于已配置的仓库中。
选项:
-v|--version:指定 PG 大版本-y|--yes:自动确认安装--plan:预览安装计划,不执行包管理器命令
软件包安装成功,只代表主机上已有扩展文件。请按照 ext info 给出的提示完成预加载、重启与 CREATE EXTENSION。
ext rm
移除一个或多个 PostgreSQL 扩展。
选项:
-v|--version:指定 PG 大版本-y|--yes:自动确认移除--plan:预览移除计划,不执行包管理器命令
该命令移除的是操作系统软件包,而不是数据库对象。删除共享文件前,应先在所有受影响数据库中移除或迁移依赖它的扩展。
ext update
将指定软件包更新到已配置仓库提供的版本。不带参数时,命令不执行更新。
选项:
-v|--version:指定 PG 大版本-y|--yes:自动确认更新-m|--mirror:更新软件包前,优先从pigsty.cc镜像刷新扩展目录;软件包仍从已配置的系统仓库下载
该命令不会执行 SQL 迁移。软件包升级完成后,请按扩展发布说明,在每个适用数据库中执行 ALTER EXTENSION ... UPDATE。
ext import
下载扩展包到本地仓库,便于离线安装。
选项:
-d|--repo:指定仓库目录(默认:/www/pigsty)
部分名称无法解析时,已解析出的包仍会下载,但命令以失败退出。结构化结果保留 requested、已解析的 packages、确认完成的 downloaded 与无法解析的 failed 名称。原生下载命令失败也可能在目标目录留下文件;失败不表示回滚,也不表示下载完整。
Debian/Ubuntu 上,<virtual-package> 这样的虚拟依赖标记不会加入下载包名列表,
真实软件包依赖仍参与下载。
JSON/YAML 输出及 PIG_NON_INTERACTIVE=1 使用非交互 sudo。提权需要密码时,命令直接失败,
不会等待输入;请先配置适当的 sudo 权限。
ext link
将指定 PG 版本链接到系统 PATH。
该命令创建 /usr/pgsql 软链接,并写入 /etc/profile.d/pgsql.sh。在当前 Shell 中加载配置:
ext reload
刷新扩展元数据。
更新后的文件会放置于 ~/.pig/extension.csv 中。