这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

PIG 包管理器

PostgreSQL 扩展生态包管理器

—— Postgres Install Genius,PostgreSQL 生态中缺失的扩展包管理器

PIG 包管理器是一个专门用于安装、管理、构建 PostgreSQL 及其扩展的命令行工具,使用 Go 开发,开箱即用,简单易用,小巧玲珑(4MB)。 PIG 包管理器并非重新发明的土鳖轮子,而是 依托 (PiggyBack)现有 Linux 发行版包管理器 (apt/dnf)的一个高级抽象层。 它屏蔽了不同操作系统,不同芯片架构,以及不同 PG 大版本的管理差异,让您用简单的几行命令,就可以完成 PG 内核与 431+ 扩展的安装与管理。

请注意:对于扩展安装来说,pig 并非必须组件,您依然可以使用 apt / dnf 等包管理器直接访问 Pigsty PGSQL 仓库。

  • 简介:为什么需要专用的 PG 包管理器?
  • 上手:快速上手与样例
  • 安装:下载、安装、更新 pig

快速上手

使用以下命令即可在您的系统上 安装 PIG 包管理器:

默认安装(Cloudflare CDN):

curl -fsSL https://repo.pigsty.io/pig | bash

中国镜像

curl -fsSL https://repo.pigsty.cc/pig | bash

安装完成后,几行命令即可 快速开始 。例如,若需安装 PG 18 与相应的 pg_duckdb 扩展:

$ pig repo set                        # 一次性设置好 Linux, Pigsty + PGDG 仓库(覆盖式!)
$ pig install pg18                    # 安装 PostgreSQL 18 内核(原生 PGDG 包)
$ pig install pg_duckdb -v 18         # 安装 pg_duckdb 扩展(针对当前 pg 18)
$ pig install -y postgis timescaledb  # 针对当前活跃PG版本,安装多个扩展
$ pig install -y vector               # 您可以使用扩展名称(vector)或者扩展包名称(pgvector)来安装扩展!

命令参考

你可以执行 pig help <command> 获取子命令的详细帮助。

关于

pig 命令行工具由 Vonng(冯若航 rh@vonng.com)开发,并以 Apache 2.0 许可证开源。

您还可以参考 PIGSTY 项目,提供了包括扩展交付在内的完整 PostgreSQL RDS DBaaS 使用体验。

  • PGEXT:扩展数据与管理工具
  • PIG:PostgreSQL 包管理器
  • PIGSTY:开箱即用的 PostgreSQL 发行版

1 - 上手

快速上手 pig,PostgreSQL 包管理器

下面是一个简单的上手教程,带您体验 PIG 包管理器的核心能力。

简短版本

curl -fsSL https://repo.pigsty.io/pig | bash   # 从 Cloudflare 安装 PIG
pig repo set                                   # 一次性设置好 Linux, Pigsty + PGDG 仓库(覆盖式!)
pig install -v 18 -y pg18 pg_duckdb vector     # 安装 PG 18 内核,pg_duckdb, pgvector 扩展……

安装

您可以使用以下命令 一键安装 pig

中国大陆

curl -fsSL https://repo.pigsty.cc/pig | bash

全球网站(Cloudflare CDN):

curl -fsSL https://repo.pigsty.io/pig | bash

PIG 二进制包大约 4 MB,在 Linux 上会自动使用 rpmdpkg 安装最新可用版本:

root@pg-meta-1:~# curl -fsSL https://repo.pigsty.cc/pig | bash
[INFO] kernel = Linux
[INFO] machine = x86_64
[INFO] package = deb
[INFO] pkg_url = https://repo.pigsty.cc/pkg/pig/v0.9.0/pig_0.9.0-1_amd64.deb
[INFO] download = /tmp/pig_0.9.0-1_amd64.deb
[INFO] downloading pig v0.9.0
curl -fSL https://repo.pigsty.cc/pkg/pig/v0.9.0/pig_0.9.0-1_amd64.deb -o /tmp/pig_0.9.0-1_amd64.deb
######################################################################## 100.0%
[INFO] md5sum = 274546a010d39f1ce0aed72cf7e17e52
[INFO] installing: dpkg -i /tmp/pig_0.9.0-1_amd64.deb
(Reading database ... 166001 files and directories currently installed.)
Preparing to unpack /tmp/pig_0.9.0-1_amd64.deb ...
Unpacking pig (0.9.0-1) over (0.8.0-1) ...
Setting up pig (0.9.0-1) ...
[INFO] pig v0.9.0 installed successfully
check https://pgext.cloud for details

检查环境

PIG 是一个由 Go 编写的二进制程序,默认安装路径为 /usr/bin/pigpig version 会打印版本信息:

root@pg-meta-1:~#  pig version
pig version 0.9.0 linux/amd64
build: HEAD 80c89c6 2025-12-28T08:05:39Z

使用 pig status 命令,会打印当前环境的状态,操作系统代码,PG的安装情况,仓库的可访问性与延迟。

root@pg-meta-1:~# pig status

# [Configuration] ================================
Pig Version      : 0.9.0
Pig Config       : /root/.pig/config.yml
Log Level        : info
Log Path         : stderr

# [OS Environment] ===============================
OS Distro Code   : u24
OS OSArch        : amd64
OS Package Type  : deb
OS Vendor ID     : ubuntu
OS Version       : 24
OS Version Full  : 24.04
OS Version Code  : noble

# [PG Environment] ===============================
Installed:
* PostgreSQL 18.1 (Ubuntu 18.1-1.pgdg24.04+2)  81  Extensions
- PostgreSQL 17.7 (Ubuntu 17.7-3.pgdg24.04+1)  147 Extensions

Active:
PG Version      :  PostgreSQL 18.1 (Ubuntu 18.1-1.pgdg24.04+2)
Config Path     :  /usr/lib/postgresql/18/bin/pg_config
Binary Path     :  /usr/lib/postgresql/18/bin
Library Path    :  /usr/lib/postgresql/18/lib
Extension Path  :  /usr/share/postgresql/18/extension

# [Pigsty Environment] ===========================
Inventory Path   : /root/pigsty/pigsty.yml
Pigsty Home      : /root/pigsty

# [Network Conditions] ===========================
google.com ping ok: 156 ms
pigsty.io  ping ok: 250 ms
pigsty.cc  ping ok: 626 ms
Internet Access   :  true
Pigsty Repo       :  pigsty.io
Inferred Region   :  default
Latest Pigsty Ver :  v4.0.0

列出扩展

使用 pig ext list 命令,可以打印内置的 PG 扩展数据目录。

[root@pg-meta ~]# pig ext list

Name                            Version     Cate   Flags   License       RPM      DEB      PG Ver  Description
----                            -------     ----   ------  -------       ------   ------   ------  ---------------------
timescaledb                     added  2.24.0      TIME   -dsl--  Timescale     PIGSTY   14-18  postgresql-18-timescaledb-tsl         Enables scalable inserts and complex queries for time-series dat
timescaledb_toolkit             avail  1.22.0      TIME   -ds-t-  Timescale     PIGSTY   15-18  postgresql-18-timescaledb-toolkit     Library of analytical hyperfunctions, time-series pipelining, an
timeseries                      avail  0.1.8       TIME   -d----  PostgreSQL    PIGSTY   13-18  postgresql-18-pg-timeseries           Convenience API for time series stack
periods                         avail  1.2.3       TIME   -ds---  PostgreSQL    PGDG     13-18  postgresql-18-periods                 Provide Standard SQL functionality for PERIODs and SYSTEM VERSIO
temporal_tables                 avail  1.2.2       TIME   -ds--r  BSD 2-Clause  PIGSTY   13-18  postgresql-18-temporal-tables         temporal tables
.........
pg_fact_loader                  n/a    2.0.1       ETL    -ds--x  MIT           PGDG     13-17  postgresql-18-pg-fact-loader          build fact tables with Postgres
pg_bulkload                     n/a    3.1.22      ETL    bds---  BSD 3-Clause  PIGSTY   13-17  postgresql-18-pg-bulkload             pg_bulkload is a high speed data loading utility for PostgreSQL
test_decoding                   avail  -           ETL    --s--x  PostgreSQL    CONTRIB  13-18  postgresql-18                         SQL-based test/example module for WAL logical decoding
pgoutput                        avail  -           ETL    --s---  PostgreSQL    CONTRIB  13-18  postgresql-18                         Logical Replication output plugin


(440 Rows) (State: added|avail|n/a, Flags: b = HasBin, d = HasDDL, s = HasLib, l = NeedLoad, t = Trusted, r = Relocatable, x = Unknown)

所有的扩展元数据都在一份名为 extension.csv 的数据文件中定义, 这份文件会随着 pig 版本发布不断更新,您可以直接使用 pig ext reload 命令更新这份数据文件。 更新后的文件会默认放置于 ~/.pig/extension.csv 中,您可以查阅与更改 —— 您也可以在本项目中找到该数据文件的 权威版本

添加仓库

要想安装扩展,首先需要添加上游仓库。pig repo 可用于管理 Linux APT/YUM/DNF 软件仓库配置。

您可以使用简单粗暴直接的版本 pig repo set 覆盖式写入现有仓库配置,该命令确保系统中只存在必须的仓库配置:

pig repo set                # 一次性配置好所有仓库,包括 Linux 系统仓库,PGDG,PIGSTY (PGSQL+INFRA) 仓库

警告pig repo set 会备份并清理现有的仓库配置,然后添加所需的仓库,实现 Overwrite 语义,请务必注意!

或者选择使用温和的 pig repo add 添加所需的仓库:

pig repo add pgdg pigsty     # 添加 PGDG 官方仓库 和 PIGSTY 补充仓库
pig repo add pgsql           # 【可选】您也可以选择将 PGDG 和 PIGSTY 合在一起,当成一个 "pgsql" 模块整体添加
pig repo update              # 更新缓存:apt update / yum makecache

PIG 会检测您的网络环境,并选择使用 Cloudflare 全球 CDN,或者中国境内云 CDN,但您可以通过 --region 参数强制指定区域。

pig repo set      --region=china              # 使用中国区域镜像仓库加速下载
pig repo add pgdg --region=default --update   # 强制指定使用 PGDG 上游仓库

PIG 本身不支持离线安装,您可以自行下载 RPM/DEB 包,拷贝到网络隔离的生产服务器安装。 相关项目 PIGSTY 提供本地软件仓库,支持可以使用 pig 从本地软件仓库安装已经下载好的扩展。

安装 PG

添加仓库后,您可以使用 pig ext add 子命令安装扩展(以及相关软件包)

pig ext add -v 18 -y pgsql timescaledb postgis vector pg_duckdb pg_mooncake # 安装 PG 18 内核与扩展,自动确认

# 该命令会自动执行翻译,将软件包翻译为
INFO[20:34:44] translate alias 'pgsql' to package: postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl
INFO[20:34:44] translate extension 'timescaledb' to package: timescaledb-tsl_18
INFO[20:34:44] translate extension 'postgis' to package: postgis36_18
INFO[20:34:44] translate extension 'vector' to package: pgvector_18
INFO[20:34:44] translate extension 'pg_duckdb' to package: pg_duckdb_18
INFO[20:34:44] translate extension 'pg_mooncake' to package: pg_mooncake_18
INFO[20:34:44] installing packages: dnf install -y postgresql18 postgresql18-server postgresql18-libs postgresql18-contrib postgresql18-plperl postgresql18-plpython3 postgresql18-pltcl timescaledb-tsl_18 postgis36_18 pgvector_18 pg_duckdb_18 pg_mooncake_18

这里使用了 “别名翻译” 机制,将清爽的 PG 内核/扩展 逻辑包名翻译为实际的 RPM/DEB 列表。如果您不需要别名翻译机制,可以直接使用 apt/dnf 安装, 或者使用变体 pig install-n|--no-translation 参数:

pig install vector     # 带有翻译机制,安装当前 PG 18 对应的 pgvector_18 或 postgresql-18-pgvector
pig install vector -n  # 关闭翻译机制,安装名为 vector 的日志收集组件(来自 pigsty-infra 仓库)

别名翻译

PostgreSQL 内核与扩展对应着一系列的 RPM/DEB 包,记住这些包是一件麻烦事,所以 pig 提供了许多常用的别名,帮助您简化安装过程:

例如在 EL 系统上, 下面的别名将会被翻译为右侧的对应 RPM 包列表:

pgsql:        "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl"
pg18:         "postgresql18 postgresql18-server postgresql18-libs postgresql18-contrib postgresql18-plperl postgresql18-plpython3 postgresql18-pltcl"
pg17-client:  "postgresql17"
pg17-server:  "postgresql17-server postgresql17-libs postgresql17-contrib"
pg17-devel:   "postgresql17-devel"
pg17-basic:   "pg_repack_17* wal2json_17* pgvector_17*"
pg16-mini:    "postgresql16 postgresql16-server postgresql16-libs postgresql16-contrib"
pg15-full:    "postgresql15 postgresql15-server postgresql15-libs postgresql15-contrib postgresql15-plperl postgresql15-plpython3 postgresql15-pltcl postgresql14-llvmjit postgresql15-test postgresql15-devel"
pg14-main:    "postgresql14 postgresql14-server postgresql14-libs postgresql14-contrib postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl pg_repack_14* wal2json_14* pgvector_14*"
pg13-core:    "postgresql13 postgresql13-server postgresql13-libs postgresql13-contrib postgresql13-plperl postgresql13-plpython3 postgresql13-pltcl"

注意这里的 $v 占位符会被替换为 PG 大版本号,因此当您使用 pgsql 别名时,$v 会被实际替代为 18,17 这样的大版本号。 因此,当您安装 pg17-server 别名时,EL 上实际安装的是 postgresql17-server, postgresql17-libs, postgresql17-contrib,在 Debian / Ubuntu 上安装的是 postgresql-17 ,pig 会处理好所有细节。

常用 PostgreSQL 别名

EL 使用的别名翻译列表

"pgsql":        "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl",
"pgsql-mini":   "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib",
"pgsql-core":   "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl",
"pgsql-full":   "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl postgresql$v-llvmjit postgresql$v-test postgresql$v-devel",
"pgsql-main":   "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl pg_repack_$v wal2json_$v pgvector_$v",
"pgsql-client": "postgresql$v",
"pgsql-server": "postgresql$v-server postgresql$v-libs postgresql$v-contrib",
"pgsql-devel":  "postgresql$v-devel",
"pgsql-basic":  "pg_repack_$v wal2json_$v pgvector_$v",

Debian / Ubuntu 系统使用的别名翻译

"pgsql":        "postgresql-$v postgresql-client-$v postgresql-plpython3-$v postgresql-plperl-$v postgresql-pltcl-$v",
"pgsql-mini":   "postgresql-$v postgresql-client-$v",
"pgsql-core":   "postgresql-$v postgresql-client-$v postgresql-plpython3-$v postgresql-plperl-$v postgresql-pltcl-$v",
"pgsql-full":   "postgresql-$v postgresql-client-$v postgresql-plpython3-$v postgresql-plperl-$v postgresql-pltcl-$v postgresql-server-dev-$v",
"pgsql-main":   "postgresql-$v postgresql-client-$v postgresql-plpython3-$v postgresql-plperl-$v postgresql-pltcl-$v postgresql-$v-repack postgresql-$v-wal2json postgresql-$v-pgvector",
"pgsql-client": "postgresql-client-$v",
"pgsql-server": "postgresql-$v",
"pgsql-devel":  "postgresql-server-dev-$v",
"pgsql-basic":  "postgresql-$v-repack postgresql-$v-wal2json postgresql-$v-pgvector",

上面这些别名可以直接使用,并通过参数实例化大版本号,也可以使用另一种带有大版本号的别名变体:即将 pgsql 替换为 pg18, pg17, pgxx 等具体大版本号。 例如,对于 PostgreSQL 18,可以直接使用下面这些别名:

pgsqlpg18pg17pg16pg15pg14pg13
pgsqlpg18pg17pg16pg15pg14pg13
pgsql-minipg18-minipg17-minipg16-minipg15-minipg14-minipg13-mini
pgsql-corepg18-corepg17-corepg16-corepg15-corepg14-corepg13-core
pgsql-fullpg18-fullpg17-fullpg16-fullpg15-fullpg14-fullpg13-full
pgsql-mainpg18-mainpg17-mainpg16-mainpg15-mainpg14-mainpg13-main
pgsql-clientpg18-clientpg17-clientpg16-clientpg15-clientpg14-clientpg13-client
pgsql-serverpg18-serverpg17-serverpg16-serverpg15-serverpg14-serverpg13-server
pgsql-develpg18-develpg17-develpg16-develpg15-develpg14-develpg13-devel
pgsql-basicpg18-basicpg17-basicpg16-basicpg15-basicpg14-basicpg13-basic

安装扩展

pig 会检测当前系统环境中的 PostgreSQL 安装情况。如果检测到环境中(以 PATH 中的 pg_config 为准)有活跃的 PG 安装,那么 pig 会自动安装对应 PG 大版本所需的扩展,无需您显式指定 PG 大版本。

pig install pg_smtp_client          # 更简单
pig install pg_smtp_client -v 18    # 显示指定大版本,更稳定可靠
pig install pg_smtp_client -p /usr/lib/postgresql/16/bin/pg_config   # 另一种指定 PG 版本的方式
dnf install pg_smtp_client_18       # 最直接……,但并非所有扩展都这么简单……

提示:如需将特定大版本的 PostgreSQL 内核二进制加入 PATH,可用 pig ext link 命令:

pig ext link pg17             # 创建 /usr/pgsql 软链接,并写入 /etc/profile.d/pgsql.sh
. /etc/profile.d/pgsql.sh     # 立即生效,更新 PATH 环境变量

如果你想要安装特定版本的软件,可以使用 name=ver 的语法:

pig ext add -v 17 pgvector=0.7.2 # install pgvector 0.7.2 for PG 17
pig ext add pg16=16.5            # install PostgreSQL 16 with a specific minor version

警告:请注意,目前只有 PGDG YUM 仓库提供扩展历史版本,PIGSTY 仓库与 PGDG APT 仓库都只提供扩展的 最新版本

显示扩展

pig ext status 命令可以用于显示当前安装的扩展。

$ pig ext status -v 18

Installed:
- PostgreSQL 18.0  80  Extensions

No active PostgreSQL found in PATH:
- /root/.local/bin
- /root/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
Extension Stat  :  11 Installed (PIGSTY 3, PGDG 8) + 69 CONTRIB = 80 Total

Name                          Version  Cate  Flags   License     Repo    Package              Description
----                          -------  ----  ------  -------     ------  ------------         ---------------------
timescaledb                   2.23.0   TIME  -dsl--  Timescale   PIGSTY  timescaledb-tsl_18*  Enables scalable inserts and complex queries for time-series dat
postgis                       3.6.0    GIS   -ds---  GPL-2.0     PGDG    postgis36_18*        PostGIS geometry and geography spatial types and functions
postgis_topology              3.6.0    GIS   -ds---  GPL-2.0     PGDG    postgis36_18*        PostGIS topology spatial types and functions
postgis_raster                3.6.0    GIS   -ds---  GPL-2.0     PGDG    postgis36_18*        PostGIS raster types and functions
postgis_sfcgal                3.6.0    GIS   -ds--r  GPL-2.0     PGDG    postgis36_18*        PostGIS SFCGAL functions
postgis_tiger_geocoder        3.6.0    GIS   -ds-t-  GPL-2.0     PGDG    postgis36_18*        PostGIS tiger geocoder and reverse geocoder
address_standardizer          3.6.0    GIS   -ds--r  GPL-2.0     PGDG    postgis36_18*        Used to parse an address into constituent elements. Generally us
address_standardizer_data_us  3.6.0    GIS   -ds--r  GPL-2.0     PGDG    postgis36_18*        Address Standardizer US dataset example
vector                        0.8.1    RAG   -ds--r  PostgreSQL  PGDG    pgvector_18*         vector data type and ivfflat and hnsw access methods
pg_duckdb                     1.1.0    OLAP  -dsl--  MIT         PIGSTY  pg_duckdb_18*        DuckDB Embedded in Postgres
pg_mooncake                   0.2.0    OLAP  -d----  MIT         PIGSTY  pg_mooncake_18*      Columnstore Table in Postgres

如果您的当前系统路径中找不到 PostgreSQL(以 PATH 中的 pg_config 为准),那么请务必通过 -v|-p 指定 PG 大版本号或 pg_config 路径。

扫描扩展

pig ext scan 提供更底层的扩展扫描功能,将扫描指定 PostgreSQL 目录下的共享库,从而发现安装了哪些扩展:

root@s37451:~# pig ext scan
Installed:
* PostgreSQL 17.6 (Debian 17.6-2.pgdg13+1)    70  Extensions
- PostgreSQL 15.14 (Debian 15.14-1.pgdg13+1)  69  Extensions
- PostgreSQL 14.19 (Debian 14.19-1.pgdg13+1)  66  Extensions
- PostgreSQL 13.22 (Debian 13.22-1.pgdg13+1)  64  Extensions
- PostgreSQL 18.0 (Debian 18.0-1.pgdg13+3)    70  Extensions
- PostgreSQL 16.10 (Debian 16.10-1.pgdg13+1)  70  Extensions

Active:
PG Version      :  PostgreSQL 17.6 (Debian 17.6-2.pgdg13+1)
Config Path     :  /usr/lib/postgresql/17/bin/pg_config
Binary Path     :  /usr/lib/postgresql/17/bin
Library Path    :  /usr/lib/postgresql/17/lib
Extension Path  :  /usr/share/postgresql/17/extension
Name                 Version  SharedLibs                                       Description            Meta
----                 -------  ----------                                       ---------------------  ------
amcheck              1.4      functions for verifying relation integrity       relocatable=true module_pathname=$libdir/amcheck lib=amcheck.so
...
pg_duckdb            1.1.0    DuckDB Embedded in Postgres                      module_pathname=$libdir/pg_duckdb relocatable=false schema=public lib=libduckdb.so, pg_duckdb.so
pg_mooncake          0.2.0    Real-time analytics on Postgres tables           module_pathname=pg_mooncake relocatable=false requires=pg_duckdb superuser=true lib=pg_mooncake.so
pg_prewarm           1.2      prewarm relation data                            module_pathname=$libdir/pg_prewarm relocatable=true lib=pg_prewarm.so
pg_smtp_client       0.2.1    PostgreSQL extension to send email using SMTP    relocatable=false superuser=false schema=smtp_client module_pathname=$libdir/pg_smtp_client lib=pg_smtp_client.so
...
Encoding Libs: cyrillic_and_mic, euc2004_sjis2004, euc_cn_and_mic, euc_jp_and_sjis, euc_kr_and_mic, euc_tw_and_big5, latin2_and_win1250, latin_and_mic, utf8_and_big5, utf8_and_cyrillic, utf8_and_euc2004, utf8_and_euc_cn, utf8_and_euc_jp, utf8_and_euc_kr, utf8_and_euc_tw, utf8_and_gb18030, utf8_and_gbk, utf8_and_iso8859, utf8_and_iso8859_1, utf8_and_johab, utf8_and_sjis, utf8_and_sjis2004, utf8_and_uhc, utf8_and_win
Built-in Libs: dict_snowball, libpqwalreceiver, llvmjit

容器实战

您可以创建一台全新的虚拟机,或者使用下面的 Docker 容器进行功能测试,创建一个 d13 目录,创建 Dockerfile

FROM debian:13
USER root
WORKDIR /root/
CMD ["/bin/bash"]

RUN apt update && apt install -y ca-certificates curl && curl https://repo.pigsty.io/pig | bash
docker build -t d13:latest .
docker run -it d13:latest /bin/bash

pig repo set --region=china    # 添加中国区域的仓库
pig install -y pg18            # 安装 PGDG 18 内核包
pig install -y postgis timescaledb pgvector pg_duckdb

2 - 简介

为什么我们还需要一个新的包管理器?尤其是针对 Postgres 扩展?

你是否曾因安装或升级 PostgreSQL 扩展而头疼?翻查过时的文档、晦涩难懂的配置脚本,或是在 GitHub 上苦寻分支与补丁? Postgres 丰富的扩展生态同时意味着复杂的部署流程 —— 在多发行版、多架构环境下尤为棘手。而 PIG 可以为您解决这些烦恼。

这正是 Pig 诞生的初衷。Pig 由 Go 语言开发,致力于一站式管理 Postgres 及其 430+ 扩展。 无论是 TimescaleDB、Citus、PGVector,还是 30+ Rust 扩展,亦或 自建 Supabase 所需的全部组件 —— Pig 统一的 CLI 让一切触手可及。 它彻底告别源码编译与杂乱仓库,直接提供版本对齐的 RPM/DEB 包,完美兼容 Debian、Ubuntu、RedHat 等主流发行版,支持 x86 与 Arm 架构,无需猜测,无需折腾。

Pig 并非重复造轮子,而是充分利用系统原生包管理器(APT、YUM、DNF),严格遵循 PGDG 官方 打包规范,确保无缝集成。 你无需在"标准做法"与"快捷方式"之间权衡;Pig 尊重现有仓库,遵循操作系统最佳实践,与现有仓库和软件包和谐共存。 如果你的 Linux 系统和 PostgreSQL 大版本不在 支持的列表 中,你还可以使用 pig build 直接针对特定组合编译扩展。

想让你的 Postgres 如虎添翼、远离繁琐?欢迎访问 PIG 官方文档 获取文档、指南,并查阅庞大的 扩展列表, 让你的本地 Postgres 数据库一键进化为全能的多模态数据中台。 如果说 Postgres 的未来是无可匹敌的可扩展性,那么 Pig 就是帮你解锁它的神灯。毕竟,从没有人抱怨 “扩展太多”。

ANNOUNCE pig: The Postgres Extension Wizard


Linux 兼容性

PIG 与 Pigsty 扩展仓库支持以下 Linux 发行版和 PostgreSQL 版本组合:

OS 代码厂商大版本小版本全名PG 版本备注
el7.x86_64EL77.9CentOS 7 x8613-15EOL
el8.x86_64EL88.10RockyLinux 8 x8613-18即将EOL
el8.aarch64EL88.10RockyLinux 8 ARM13-18即将EOL
el9.x86_64EL99.6RockyLinux 9 x8613-18
el9.aarch64EL99.6RockyLinux 9 ARM13-18
el10.x86_64EL1010.0RockyLinux 10 x8613-18
el10.aarch64EL1010.0RockyLinux 10 ARM13-18
d11.x86_64Debian1111.11Debian 11 x8613-18EOL
d11.aarch64Debian1111.11Debian 11 ARM13-18EOL
d12.x86_64Debian1212.12Debian 12 x8613-18
d12.aarch64Debian1212.12Debian 12 ARM13-18
d13.x86_64Debian1313.1Debian 13 x8613-18
d13.aarch64Debian1313.1Debian 13 ARM13-18
u20.x86_64Ubuntu2020.04.6Ubuntu 20.04 x8613-18EOL
u20.aarch64Ubuntu2020.04.6Ubuntu 20.04 ARM13-18EOL
u22.x86_64Ubuntu2222.04.5Ubuntu 22.04 x8613-18
u22.aarch64Ubuntu2222.04.5Ubuntu 22.04 ARM13-18
u24.x86_64Ubuntu2424.04.3Ubuntu 24.04 x8613-18
u24.aarch64Ubuntu2424.04.3Ubuntu 24.04 ARM13-18

说明:

  • EL 指 RHEL 兼容发行版,包括 RHEL、CentOS、RockyLinux、AlmaLinux、OracleLinux 等
  • EOL 表示该操作系统已经或即将停止支持,建议升级到更新版本
  • 表示完整支持,推荐使用
  • PG 版本 13-18 表示支持 PostgreSQL 13、14、15、16、17、18 六个大版本

3 - 安装

如何下载与安装 pig 包管理器

脚本安装

安装 pig 最简单的方式是运行以下安装脚本:

默认安装(Cloudflare CDN):

curl -fsSL https://repo.pigsty.io/pig | bash

中国镜像

curl -fsSL https://repo.pigsty.cc/pig | bash

该脚本会从 Pigsty 软件仓库 下载最新版 pig 的 RPM / DEB 包,并通过 rpmdpkg 进行安装。

指定版本

您可以指定特定版本进行安装,将版本号作为参数传入即可:

默认安装(Cloudflare CDN):

curl -fsSL https://repo.pigsty.io/pig | bash -s 0.9.0

中国镜像

curl -fsSL https://repo.pigsty.cc/pig | bash -s 0.9.0

发布页下载

你也可以直接从 Pigsty 仓库下载 pig 安装包(RPM/DEB/ 压缩包):GitHub 最新版本发布页

latest
└── v0.9.0
    ├── pig_0.9.0-1_amd64.deb
    ├── pig_0.9.0-1_arm64.deb
    ├── pig-0.9.0-1.aarch64.rpm
    ├── pig-0.9.0-1.x86_64.rpm
    ├── pig-v0.9.0.linux-amd64.tar.gz
    ├── pig-v0.9.0.linux-arm64.tar.gz
    ├── pig-v0.9.0.darwin-amd64.tar.gz
    └── pig-v0.9.0.darwin-arm64.tar.gz

将其解压后,将二进制文件放入您的 PATH 系统路径中即可。

仓库安装

pig 软件位于 pigsty-infra 仓库中。你可以将该仓库添加到操作系统后,使用操作系统的包管理器进行安装:

YUM

对于 RHEL,RockyLinux,CentOS,Alma Linux,OracleLinux 等 EL 系发行版:

sudo tee /etc/yum.repos.d/pigsty-infra.repo > /dev/null <<-'EOF'
[pigsty-infra]
name=Pigsty Infra for $basearch
baseurl=https://repo.pigsty.io/yum/infra/$basearch
enabled = 1
gpgcheck = 0
module_hotfixes=1
EOF

sudo yum makecache;
sudo yum install -y pig

APT

对于 Debian,Ubuntu 等 DEB 系发行版:

sudo tee /etc/apt/sources.list.d/pigsty-infra.list > /dev/null <<EOF
deb [trusted=yes] https://repo.pigsty.io/apt/infra generic main
EOF

sudo apt update;
sudo apt install -y pig

更新

若要将现有 pig 版本升级至最新可用版本,可以使用以下命令:

pig update            # 将 pig 自身升级到最新版

若要将现有 pig 的扩展数据升级至最新可用版本,可以使用以下命令:

pig ext reload        # 将 pig 扩展数据更新至最新版本

卸载

apt remove -y pig     # Debian / Ubuntu 等 Debian 系统
yum remove -y pig     # RHEL / CentOS / RockyLinux 等 EL 系发行版
rm -rf /usr/bin/pig   # 若直接使用二进制安装,删除二进制文件即可

构建

你也可以自行构建 pigpig 使用 Go 语言开发,构建非常容易,源码托管在 github.com/pgsty/pig

git clone https://github.com/pgsty/pig.git; cd pig
go get -u; go build

所有 RPM / DEB 包都通过 GitHub CI/CD 流程使用 goreleaser 自动化构建。

4 - 版本

pig —— PostgreSQL 包管理器的发布说明

最新稳定版本是 v0.9.0

版本日期摘要GitHub
v0.9.02025-12-28调整 pig sty 命令选项,修复 pgsql aliasv0.9.0
v0.8.02025-12-26440 extensions,移除 sysupdate 仓库v0.8.0
v0.7.52025-12-12常规扩展更新,使用修复后的阿里云镜像v0.7.5
v0.7.42025-12-01更新 ivory/pgtde 内核与 pgdg extras 仓库v0.7.4
v0.7.32025-11-24修复 el10 & debian13 仓库配置v0.7.3
v0.7.22025-11-20437 个扩展,修复 pig build 的一些问题v0.7.2
v0.7.12025-11-10新网站,改进容器内的使用体验v0.7.1
v0.7.02025-11-05强化 build 能力,大批量包更新v0.7.0
v0.6.22025-10-03正式提供 PG 18 支持v0.6.2
v0.6.12025-08-14CI/CD, el10 存根, PGDG 中国镜像v0.6.1
v0.6.02025-07-17423 个扩展,percona pg_tde,mcp 工具箱v0.6.0
v0.5.02025-06-30422 个扩展,新的扩展目录v0.5.0
v0.4.22025-05-27421 个扩展,halo 和 oriole debv0.4.2
v0.4.12025-05-07414 个扩展,pg18 别名支持v0.4.1
v0.4.02025-05-01do 和 pt 子命令,halo 和 orioledbv0.4.0
v0.3.42025-04-05常规更新v0.3.4
v0.3.32025-03-25别名、仓库、依赖v0.3.3
v0.3.22025-03-21新扩展v0.3.2
v0.3.12025-03-19轻微错误修复v0.3.1
v0.3.02025-02-24新主页和扩展目录v0.3.0
v0.2.22025-02-22404 个扩展v0.2.2
v0.2.02025-02-14400 个扩展v0.2.0
v0.1.42025-02-12常规错误修复v0.1.4
v0.1.32025-01-23390 个扩展v0.1.3
v0.1.22025-01-12anon 扩展和其他 350 个扩展v0.1.2
v0.1.12025-01-09更新扩展列表v0.1.1
v0.1.02024-12-29repo、ext、sty 和自更新v0.1.0
v0.0.12024-12-23创世发布v0.0.1

v0.9.0

  • 将命令 pig sty install 重构为 pig sty deploy
  • 为命令 pig sty conf 添加新参数,与 configure 脚本对齐。
  • 将 llvmjit 包添加至 pgsql-full 别名中

校验和

ea0c098d0829720b6e364d2f2a91328876962c7f0ae94eee7bdcde0bd43313fa  pig-0.9.0-1.aarch64.rpm
707f4e1fde76d3faa05165ac11e97969c22a8740c97ef84da52727d0328990cc  pig-0.9.0-1.x86_64.rpm
56aeb61674ddfb64368e6f5535e06a38b76f62e3d6c9536a63be7df6babed93e  pig-v0.9.0.darwin-amd64.tar.gz
a213d16817d6124ffa83d93ad880a040598b6ed3fe23a74d43420c095ed43de4  pig-v0.9.0.darwin-arm64.tar.gz
6a1a1836217fa723ca42bc2276ecf1453cd2ee0acacddfc313164701b24a452f  pig-v0.9.0.linux-amd64.tar.gz
5e5728aa5922138c61c900a731f97cdc1b9653c14d7fe804b6753fb6f222b8b0  pig-v0.9.0.linux-arm64.tar.gz
e80d2cb3ceb5fd58fc0262ab4b39b44e8dcccb7712151c73a41ba50cb510353b  pig_0.9.0-1_amd64.deb
ecb504efffde8d696b765579332fc0b3304751fa8077c4c0394e7f3c44aa0fe2  pig_0.9.0-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.9.0


v0.8.0

扩展更新

  • 扩展总数达到 440 个
  • 新增扩展:pg_ai_query 0.1.1
  • 新增扩展:pg_textsearch 0.1.0
  • 新增扩展:pg_clickhouse 0.1.0
  • pg_biscuit 从 1.0 升级至 2.0.1(切换至新仓库,更名为 biscuit)
  • pg_search 从 0.20.3 升级至 0.20.5
  • pg_duckdb 升级至官方正式版 1.1.1
  • vchord_bm25 从 0.2.2 升级至 0.3.0
  • pg_semver 从 0.40.0 升级至 0.41.0
  • pg_timeseries 从 0.1.7 升级至 0.1.8
  • 修复 debian/ubuntu pg18 扩展问题:supautils、pg_summarize、pg_vectorize、pg_tiktoken、pg_tzf、pglite_fusion、pgsmcrypto、pgx_ulid、plprql
  • pigsty 版本号同步至 4.0.0

仓库更新

  • 因上游变更移除 pgdg yum sysupdate 仓库
  • 因上游变更移除 pgdg yum llvmjit 软件包
  • 修复 el9.aarch64 上 patroni 3.0.4 重复软件包问题
  • 为 el 仓库定义添加优先级,docker 仓库不可用时自动跳过
  • 添加 epel 10 / pgdg 9/10 操作系统小版本热修复

校验和

e457832fb290e2f9975bf719966dc36e650bdcbf8505d319c9e0431f4c03bc9e  pig-0.8.0-1.aarch64.rpm
c97b1bfdd7541f0f464cab0ecc273e65535c8dd2603c38d5cf8dccbf7e95b523  pig-0.8.0-1.x86_64.rpm
d892f06d3d3b440671529f40e6cc7949686e0167e2a4758adc666b8a3d75254d  pig-v0.8.0.darwin-amd64.tar.gz
222413bafdf5a62dc682dac32ea1118cbc34ec3544e2a1b85076ec450b9cc7ae  pig-v0.8.0.darwin-arm64.tar.gz
d50aa9806bbab8fee5ad9228e104fc9e7ead48729228116b5bf889000791fedc  pig-v0.8.0.linux-amd64.tar.gz
d2f410f7b243a8323c8d479f462a0267ac72d217aa4a506c80b5a9927d12dff8  pig-v0.8.0.linux-arm64.tar.gz
4ccd330a995911d4f732e8c9d62aa0db479c21c9596f64c4bc129ec43f156abe  pig_0.8.0-1_amd64.deb
5cb9eccce659110f3ba58e502575564bd6befffd51992a43d84df5a17f8eb8a0  pig_0.8.0-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.8.0


v0.7.5

扩展更新

  • timescaledb 2.23.1 -> 2.24.0
  • pg_search 0.20.0 -> 0.20.3
  • convert 0.0.4 -> 0.0.5
  • pglinter 1.0.0 -> 1.0.1
  • pgdd 0.6.0 -> 0.6.1
  • pg_session_jwt 0.3.3 -> 0.4.0
  • pg_anon 2.4.1 -> 2.5.1
  • pg_enigma 0.4.0 -> 0.5.0
  • wrappers 0.5.6 -> 0.5.7
  • pg_vectorize 0.25.0 -> 0.26.0

仓库更新

使用修复后的阿里云 PGDG 镜像仓库

校验和

9de11ac1404fc4100074113f2a5d50e4ec42c353b6e122a0b29edc17e53feca6  pig-0.7.5-1.aarch64.rpm
071d655580f1cc63b33d41a8fb49368556b7b5a276318f4bd772a6ab50e22b34  pig-0.7.5-1.x86_64.rpm
befe0a8f786e5243669ed7219acde8156d13d9adb0a5c2fb88ccf0f614a51f9b  pig-v0.7.5.darwin-amd64.tar.gz
4766b4e9ba390a32a7115e9f2dd6b65cf158439e28f9c099bab5c7f2e588bae2  pig-v0.7.5.darwin-arm64.tar.gz
dc45726c5e7fccd502cacaffc94c659570844151cdc279f2cac6500836071ade  pig-v0.7.5.linux-amd64.tar.gz
1483cf967d4bc9c12d4c6724567644d6b88fcd2a93aaf1d317fc6ad4e1672c13  pig-v0.7.5.linux-arm64.tar.gz
0152b7bd254eccadd640e563845abd9fa62efa68f11c6b67a5f9f0eebfa2d92e  pig_0.7.5-1_amd64.deb
7d22116d26ca09c5e2b8afbf086bb1acb1aea1148905efcc38944c18908fb105  pig_0.7.5-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.7.5


v0.7.4

  • 更新扩展版本与元数据:pg_searchpgmqpg_stat_monitor
  • 更新 PGDG 仓库 URL 变化,extras 仓库现在位于 yum 仓库顶层
  • 将 ivorysql 更新至 5.0 版本,与 PG 18 兼容
  • 将 Percona Postgres TDE 内核更新至 18.1

Checksums

5769b0051f04dcda22dd92b30b8effc8ddfa40097308bded76ce2b38d012ce57  pig-0.7.4-1.aarch64.rpm
d15c829fa2e3ce8dcd1adc063c107607b8e70f2cf747646aaa2fa257cdbf979c  pig-0.7.4-1.x86_64.rpm
bb4c90e253a3d470e50316e633a41e90ed2d4a5c5a1fd3a8dbb68ee87d831d47  pig-v0.7.4.darwin-amd64.tar.gz
faaf7ac7b08390f5048c081bb7a78100714387e35dc890e26d9746fc1caef415  pig-v0.7.4.darwin-arm64.tar.gz
037cacddd0dc1283f13dd2c9bace87ad7f2c74ffc245e629f1420be94bbf93df  pig-v0.7.4.linux-amd64.tar.gz
2ce819b2c3686cfb9f86790fdf61acd30bf7798bd6cd3c4f589df22e273dc867  pig-v0.7.4.linux-arm64.tar.gz
97f62d62f1cca61ce6d335efed88e3855d94ea2cd4ed941f2755fbac73931fcd  pig_0.7.4-1_amd64.deb
d2b80af89ed42601716f6b41eda3f8bee16db34023527df9deef8a43aa25a498  pig_0.7.4-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.7.4


v0.7.3

  • 新增 pig repo reload 命令,更新仓库元数据
  • 修复 EL PGDG sysupdate aarch64 仓库问题。
  • 修复 EL10.aarch64 PGDG 仓库重命名问题。
  • 订正了若干扩展版本
  • 更新 Pigsty 版本至 3.7.0

校验和

786d72f6b685d6d6abf5f255f0a7de9204988a05630a26a53bfc7631823c0c6f  pig-0.7.3-1.aarch64.rpm
da59e24ef79d1164e348bacc43e3222e8e2778ec0e103e7ffc0c6df064758e8f  pig-0.7.3-1.x86_64.rpm
73062a979749095e89abc07dd583d34d4f57908bb4ee935cf7640f129ca6a2cb  pig-v0.7.3.darwin-amd64.tar.gz
ca5f5576f6d0d9be1d10cad769821be9daa62220b2fb56b94d6e4c0cede6da61  pig-v0.7.3.darwin-arm64.tar.gz
d193b4b87cf9a6e4775b1b07709802d30f0233ccb1b728843a09decb545168d3  pig-v0.7.3.linux-amd64.tar.gz
e7f612df0e8e4d9fac6df3765862b9e491bb50aad651856abf7a6935986e6f99  pig-v0.7.3.linux-arm64.tar.gz
3d5306ce95dcf704dd498b05325d942637564b13115f1e5a5bb9ef6781df1ba6  pig_0.7.3-1_amd64.deb
32e695ba2d49a741d8cd92008f8f2dec29f10754d35b732035f48517b382c30d  pig_0.7.3-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.7.3


v0.7.2

  • 批量更新扩展,数量达到 437 个

  • 新增 PGDG EL10 Sysupdate 仓库

  • 新增 LLVM APT 仓库

  • 在 pig build 命令中使用可选的本地 extension.csv 扩展定义问题。

  • 更新的扩展: vchord pg_later pgvectorscale pglite_fusion pgx_ulid pg_search citus timescaledb pg_profile pg_stat_monitor documentdb

  • 新增的扩展:pglinter pg_typeid pg_enigma pg_retry pg_biscuit pg_weighted_statistics

校验和

f303c391fc28bc74832712e0aa58319abe0ebcae4f6c07fdf9a9e542b735d2ec  pig-0.7.2-1.aarch64.rpm
c096a61a4e3a49b1238659664bbe2cd7f29954c43fb6bb8e8e9fb271f95a612e  pig-0.7.2-1.x86_64.rpm
5e037c891dff23b46856485108d6f64bede5216dfbd4f38a481f0d0672ee910b  pig-v0.7.2.darwin-amd64.tar.gz
736b4b47999c543c3c886781f4d8dddbf4276f363c35c7bf50094b6f18d14600  pig-v0.7.2.darwin-arm64.tar.gz
20b13f059efed29dd76f6927b3e8d7b597c0c8d734f9e22ba3d0a2af6dbcd3bf  pig-v0.7.2.linux-amd64.tar.gz
9548b530c05f2ffdc8d73b8f890718d47b74a51eb62852a99c08b1b52e47f014  pig-v0.7.2.linux-arm64.tar.gz
b6faad9f92b926546a10f590274f2cb2afff21b9cea878094cfc5caf09e67d2c  pig_0.7.2-1_amd64.deb
452f73f1fa035e5417ab49fc51d797925550179ffcc023e8f03d80144309212a  pig_0.7.2-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.7.2


v0.7.1

  • 全新的网站: https://pgext.cloud
  • 修复了不必要的 sudo 使用问题,现在可以方便的在容器中使用
  • 允许 pig ext link 命令使用形如 pg17 pg18 的参数形式
  • 新增环境变量 PIG_NO_SUDO,强制不使用 sudo 执行命令
  • RPM 变更日志: 为几乎所有扩展新增 PG 18 支持
  • DEB 变更日志: 为几乎所有扩展新增 PG 18 支持
  • Infra 变更日志: 例行更新至最新版本

校验和

a696c9ec784e2fc248e5f3d87cc8aae4116e890f78c5997957d30593f2c85ca6  pig-0.7.1-1.aarch64.rpm
f669538a99cd1dc592d3005b949628fcceb9e78114fc78862d7726b340ee194d  pig-0.7.1-1.x86_64.rpm
e42bdaaf93b720c5b76b32b57362320e4b447109740c76089aefe030b7c8b836  pig-v0.7.1.darwin-amd64.tar.gz
b4c240aadad34e785666ee0a755d9b7455724f790c2d088a1dd7c37ad3b2a457  pig-v0.7.1.darwin-arm64.tar.gz
ffc687add0ca71ac90cba5749c8a7a6075cf7618cba85584072831cf3eb182f7  pig-v0.7.1.linux-amd64.tar.gz
7b0d1f158150d0a40c525692f02b6bce9f5b4ac523a4e59278d702c334e222e1  pig-v0.7.1.linux-arm64.tar.gz
43e91a3bea273d7cacb2d7a58c0a5745501dbd06348b5cb3af971171fae70268  pig_0.7.1-1_amd64.deb
fc2a34aeb46e07cb0ae93611de47d6622c3bd46fe4c415ce4c9091840e0e08a2  pig_0.7.1-1_arm64.deb

发布:https://github.com/pgsty/pig/releases/tag/v0.7.1


v0.7.0

  • 提供针对 Debian 13 和 EL 10 发行版的支持
  • 大批量扩展更新至最新版本,带有 PostgreSQL 18 支持。
  • 几乎所有 Rust 扩展现已通过 pgrx 0.16.1 支持 PG 18
  • pig build 命令彻底重做
    • pig build pkg <pkg> 现在会一条龙完成扩展的下载,依赖安装,构建
    • pig build pgrx 命令现在从 pig build rust 中分离
    • pig build pgrx [-v pgrx_version] 现在可以直接使用现有的 PG 安装
    • pig build dep 现在会处理 EL 和 Debian 系统下的扩展依赖
    • pig build ext 命令现在有了更为紧凑和美观的输出,可在 EL 下不依赖 build 脚本直接构建 RPM
    • pig build spec 现在支持直接从Pigsty仓库下载 spec 文件包
    • pig build repo / pig repo add / pig repo set 现在默认使用 node,pgsql,infra 仓库模块,取代原本的 node,pgdg,pigsty
  • 大量优化了错误日志记录。
  • 基于 hugo 与 hextra 全新目录网站

校验和

ad60f9abcde954769e46eb23de61965e  pig_0.7.0-1_amd64.deb
aa15d7088d561528e38b2778fe8f7cf9  pig_0.7.0-1_arm64.deb
05549fe01008e04f8d5a59d4f2a5f0b8  pig-0.7.0-1.aarch64.rpm
0cc9e46c7c72d43c127a6ad115873b67  pig-0.7.0-1.x86_64.rpm
ddacfb052f3f3e5567a02e92fdb31cdd  pig-v0.7.0.darwin-amd64.tar.gz
17d25b565308d3d35513e4b0d824946b  pig-v0.7.0.darwin-arm64.tar.gz
ee7e055ceff638039956765fb747f80b  pig-v0.7.0.linux-amd64.tar.gz
284e674807b87447d4b33691fd7a420d  pig-v0.7.0.linux-arm64.tar.gz

发布:https://github.com/pgsty/pig/releases/tag/v0.7.0


v0.6.2

  • 使用 PG 18 官方正式仓库取代原本的 Testing Beta 仓库 instead of testing repo
  • 在接收 Pigsty 版本字符串的时候,自动添加 v 前缀
  • 改进了网络检查与下载的逻辑

校验和

01f5b7dc20644226c762dbb229768347  pig_0.6.2-1_amd64.deb
ce4f00256adc12cbea91467b7f2241cd  pig_0.6.2-1_arm64.deb
cefc36ae8f348aede533b30836fba720  pig-0.6.2-1.aarch64.rpm
d04a287c6eb92b11ecbf99542c2db602  pig-0.6.2-1.x86_64.rpm
e637ca86a7f38866c67686b060223d9a  pig-v0.6.2.darwin-amd64.tar.gz
79749bc69c683586bd8d761bdf6af98e  pig-v0.6.2.darwin-arm64.tar.gz
ad4f02993c7d7d8eec142f0224551bb4  pig-v0.6.2.linux-amd64.tar.gz
9793affa4a0cb60e9753e65b7cba3dca  pig-v0.6.2.linux-arm64.tar.gz

发布:https://github.com/pgsty/pig/releases/tag/v0.6.2


v0.6.1

  • 新增 el10 与 debian 13 trixie 的支持存根
  • 专门的新文档网站: https://pgext.cloud/pig
  • 使用 go 1.25 重新构建,新增 CI/CD 管道
  • 在中国大陆使用 PIGSTY PGDG 镜像
  • 移除空的 pgdg-el10fix 仓库
  • 使用 Pigsty WiltonDB 镜像
  • 修复 EL 10 专用的 EPEL 仓库
  • pig version 输出构建环境信息

发布:https://github.com/pgsty/pig/releases/tag/v0.6.1


v0.6.0

  • 新扩展目录:https://ext.pgsty.com
  • 新子命令:pig install 简化 pig ext install
  • 添加新内核支持:带 pg_tde 的 percona
  • 添加新包:Google GenAI MCP 数据库工具箱
  • 添加新仓库:percona 仓库和 clickhouse 仓库
  • 将扩展摘要信息链接更改为 https://ext.pgsty.com
  • 修复 orioledb 在 Debian/Ubuntu 系统上的问题
  • 修复 EL 发行版上的 epel 仓库
  • 将 golang 升级到 1.24.5
  • 将 pigsty 升级到 v3.6.0

校验和

1804766d235b9267701a08f95903bc3b  pig_0.6.0-1_amd64.deb
35f4efa35c1eaecdd12aa680d29eadcb  pig_0.6.0-1_arm64.deb
b523b54d9f2d7dcc5999bcc6bd046b1d  pig-0.6.0-1.aarch64.rpm
9434d9dca7fd9725ea574c5fae1a7f52  pig-0.6.0-1.x86_64.rpm
f635c12d9ad46a779aa7174552977d11  pig-v0.6.0.linux-amd64.tar.gz
165af4e63ec0031d303fe8b6c35c5732  pig-v0.6.0.linux-arm64.tar.gz

发布:https://github.com/pgsty/pig/releases/tag/v0.6.0


v0.5.0

  • 将扩展列表更新至 422 个
  • 新扩展:来自 AWS 的 pgactive
  • 将 timescaledb 升级到 2.20.3
  • 将 citus 升级到 13.1.0
  • 将 vchord 升级到 0.4.3
  • 修复错误:pgvectorscale debian/ubuntu pg17 失败
  • 将 kubernetes 仓库升级到 1.33
  • 将默认 pigsty 版本升级到 3.5.0

校验和

9ec6f3caf3edbe867caab5de0e0ccb33  pig_0.5.0-1_amd64.deb
4fbb0a42cd8a88bce50b3c9d85745d77  pig_0.5.0-1_arm64.deb
9cf8208396b068cab438f72c90d39efe  pig-0.5.0-1.aarch64.rpm
d9a8d78c30f45e098b29c3d16471aa8d  pig-0.5.0-1.x86_64.rpm
761df804ff7b83965c41492700717674  pig-v0.5.0.linux-amd64.tar.gz
5d1830069d98030728f08835f883ea39  pig-v0.5.0.linux-arm64.tar.gz

发布:https://github.com/pgsty/pig/releases/tag/v0.5.0


v0.4.2

  • 将扩展列表更新至 421 个
  • 为 Debian / Ubuntu 添加 openhalo/orioledb 支持
  • pgdd 0.6.0 (pgrx 0.14.1)
  • convert 0.0.4 (pgrx 0.14.1)
  • pg_idkit 0.3.0 (pgrx 0.14.1)
  • pg_tokenizer.rs 0.1.0 (pgrx 0.13.1)
  • pg_render 0.1.2 (pgrx 0.12.8)
  • pgx_ulid 0.2.0 (pgrx 0.12.7)
  • pg_ivm 1.11.0 适用于 debian/ubuntu
  • orioledb 1.4.0 beta11
  • 重新添加 el7 仓库

校验和

bbf83fa3e3ec9a4dca82eeed921ae90a  pig_0.4.2-1_amd64.deb
e45753335faf80a70d4f2ef1d3100d72  pig_0.4.2-1_arm64.deb
966d60bbc2025ba9cc53393011605f9f  pig-0.4.2-1.aarch64.rpm
1f31f54da144f10039fa026b7b6e75ad  pig-0.4.2-1.x86_64.rpm
1eec26c4e69b40921e209bcaa4fe257a  pig-v0.4.2.linux-amd64.tar.gz
768d43441917a3625c462ce9f2b9d4ef  pig-v0.4.2.linux-arm64.tar.gz

发布:https://github.com/pgsty/pig/releases/tag/v0.4.2


v0.4.1

  • 将扩展列表更新至 414 个
  • pig ext scan 映射中添加 citus_wal2jsoncitus_pgoutput
  • 添加 PG 18 beta 仓库
  • 添加 PG 18 包别名

发布:https://github.com/pgsty/pig/releases/tag/v0.4.1


v0.4.0

  • 更新扩展列表,可用扩展达到 407
  • 添加 pig do 子命令用于执行 Pigsty playbook 任务
  • 添加 pig pt 子命令用于包装 Patroni 命令行工具
  • 添加扩展别名:openhaloorioledb
  • 添加 gitlab-ce / gitlab-ee 仓库区分
  • 使用最新 Go 1.24.2 构建并升级依赖项版本
  • 修复特定条件下 pig ext status 的 panic 问题
  • 修复 pig ext scan 无法匹配多个扩展的问题

发布:https://github.com/pgsty/pig/releases/tag/v0.4.0


v0.3.4

curl https://repo.pigsty.io/pig | bash -s 0.3.4
  • 常规扩展元数据更新
  • 使用阿里云 epel 镜像代替损坏的清华大学 tuna 镜像
  • 升级 pigsty 版本字符串
  • 在仓库列表中添加 gitlab 仓库

发布:https://github.com/pgsty/pig/releases/tag/v0.3.4


v0.3.3

  • 添加 pig build dep 命令安装扩展构建依赖项
  • 更新默认仓库列表
  • mssql 模块(wiltondb/babelfish)使用 pigsty.io 镜像
  • 将 docker 模块合并到 infra
  • 从 el7 目标中移除 pg16/17
  • 允许在 el7 中安装扩展
  • 更新包别名

发布:https://github.com/pgsty/pig/releases/tag/v0.3.3


v0.3.2

增强功能

  • 新扩展
  • 使用 upx 减少二进制大小
  • 移除嵌入的 pigsty 以减少二进制大小

发布:https://github.com/pgsty/pig/releases/tag/v0.3.2


v0.3.1

常规错误修复

  • 修复仓库格式字符串
  • 修复扩展信息链接
  • 更新 pg_mooncake 元数据

发布:https://github.com/pgsty/pig/releases/tag/v0.3.1


v0.3.0

pig 项目现在有了新的 主页,以及 PostgreSQL 扩展 目录

发布:https://github.com/pgsty/pig/releases/tag/v0.3.0


v0.2.2

Pig v0.2.2 中提供 404 个扩展

发布:https://github.com/pgsty/pig/releases/tag/v0.2.2


v0.2.0

发布:https://github.com/pgsty/pig/releases/tag/v0.2.0


v0.1.4

发布:https://github.com/pgsty/pig/releases/tag/v0.1.4


v0.1.3

v0.1.3,常规更新,现在可用 390 个扩展!

发布:https://github.com/pgsty/pig/releases/tag/v0.1.3


v0.1.2

351 个 PostgreSQL 扩展,包括强大的 postgresql-anonymizer 2.0

发布:https://github.com/pgsty/pig/releases/tag/v0.1.2


v0.1.0

pig CLI v0.1 发布

发布:https://github.com/pgsty/pig/releases/tag/v0.1.0


v0.0.1

创世发布

发布:https://github.com/pgsty/pig/releases/tag/v0.0.1

5 - 命令参考

6 - pig

pig CLI 命令参考概览

pig CLI 提供了全面的工具集,用于管理 PostgreSQL 安装、扩展、软件仓库以及从源码构建扩展。使用 pig help <command> 查看命令文档。

概览

pig - PostgreSQL 的 Linux 包管理器

Usage:
  pig [command]

Examples:

  pig repo add -ru            # 覆盖现有仓库并更新缓存
  pig install pg17            # 安装 PostgreSQL 17 PGDG 软件包
  pig install pg_duckdb       # 安装指定的 PostgreSQL 扩展
  pig install pgactive -v 18  # 为特定 PG 版本安装扩展

  访问 https://pig.pgsty.com 获取详情

PostgreSQL Extension Manager
  ext         管理 PostgreSQL 扩展 (pgext)
  repo        管理 Linux 软件仓库 (apt/dnf)
  build       构建 Postgres 扩展

Pigsty Management Commands
  do          运行管理任务
  sty         管理 Pigsty 安装

Additional Commands:
  completion  生成指定 shell 的自动补全脚本
  help        获取任何命令的帮助信息
  install     使用原生包管理器安装软件包
  status      显示环境状态
  update      升级 pig 自身
  version     显示 pig 版本信息

Flags:
      --debug              启用调试模式
  -h, --help               获取帮助信息
  -H, --home string        Pigsty 主目录路径
  -i, --inventory string   配置清单路径
      --log-level string   日志级别: debug, info, warn, error, fatal, panic (默认 "info")
      --log-path string    日志文件路径,默认为终端输出

使用 "pig [command] --help" 获取命令的详细信息。

pig repo

管理 PostgreSQL 软件包的 APT/YUM 仓库,详情请参考 pig repo

pig repo list                    # 列出可用仓库
pig repo info   pgdg             # 显示仓库详情
pig repo status                  # 检查当前仓库状态
pig repo add    pgdg pigsty -u   # 添加仓库
pig repo rm     old-repo         # 移除仓库
pig repo update                  # 更新软件包缓存
pig repo create /www/pigsty      # 创建本地仓库
pig repo cache                   # 创建离线包
pig repo boot                    # 从离线包引导

pig ext

管理 PostgreSQL 扩展和内核包,详情请参考 pig ext

pig ext list    duck             # 搜索扩展
pig ext info    pg_duckdb        # 扩展详情
pig ext status                   # 显示已安装的扩展
pig ext add     pg_duckdb -y     # 安装扩展
pig ext rm      old_extension    # 移除扩展
pig ext update                   # 更新扩展
pig ext scan                     # 扫描已安装的扩展
pig ext import  pg_duckdb        # 下载以供离线使用
pig ext link    17               # 链接 PG 版本到 PATH
pig ext reload                   # 刷新扩展目录

pig build

从源码构建 PostgreSQL 扩展,详情请参考 pig build

# 环境设置
pig build spec                   # 初始化构建规格
pig build repo                   # 设置仓库
pig build tool                   # 安装构建工具
pig build rust -y                # 安装 Rust(用于 Rust 扩展)
pig build pgrx                   # 安装 PGRX 框架

# 构建扩展
pig build pkg citus              # 完整构建流程 = get + dep + ext
pig build get citus              # 下载源码
pig build dep citus              # 安装依赖
pig build ext citus              # 构建包

pig sty

安装 Pigsty 发行版,详情请参考 pig sty

pig sty init                     # 安装 Pigsty 到 ~/pigsty
pig sty boot                     # 安装 Ansible 依赖
pig sty conf                     # 生成配置
pig sty deploy                   # 运行部署 playbook

7 - pig ext

使用 pig ext 子命令管理 PostgreSQL 扩展

pig ext 命令是一个用于管理 PostgreSQL 扩展的全能工具。它允许用户搜索、安装、移除、更新和管理 PostgreSQL 扩展,甚至支持内核包的管理。

命令描述备注
ext list搜索扩展
ext info显示扩展详细信息
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 扩展前,你需要先添加 pig repo add

pig repo add pgdg pigsty -u    # 温和方式添加 pgdg 和 pigsty 仓库
pig repo set -u                # 粗暴方式移除并添加所有所需仓库

然后你可以搜索并安装 PostgreSQL 扩展:

pig ext install pg_duckdb
pig ext install pg_partman
pig ext install pg_cron
pig ext install pg_repack
pig ext install pg_stat_statements
pig ext install pg_stat_kcache

可用扩展及其名称请查阅 扩展列表

使用说明:

  1. 未指定 PostgreSQL 版本时,工具会尝试从 PATH 中的 pg_config 自动检测当前活动的 PostgreSQL 安装。
  2. PostgreSQL 可通过主版本号(-v)或 pg_config 路径(-p)指定。
    • 若指定 -v,pig 会使用该版本 PGDG 内核包的默认路径。
      • EL 发行版为 /usr/pgsql-$v/bin/pg_config
      • DEB 发行版为 /usr/lib/postgresql/$v/bin/pg_config 等。
    • 若指定 -p,则直接用该路径定位 PostgreSQL。
  3. 扩展管理器会根据操作系统自动适配不同的包格式:
    • RHEL/CentOS/Rocky Linux/AlmaLinux 使用 RPM 包
    • Debian/Ubuntu 使用 DEB 包
  4. 某些扩展可能有依赖项,安装时会自动解决。
  5. 谨慎使用 -y 参数,它会自动确认所有提示。

Pigsty 假定你已安装官方 PGDG 内核包,如未安装,可用如下命令:

pig ext install pg17          # 安装 PostgreSQL 17 内核(除 devel 包)

ext list

列出(或搜索)扩展目录中的可用扩展。

pig ext list                     # 列出所有扩展
pig ext list duck                # 搜索包含 "duck" 的扩展
pig ext list vector ai           # 搜索多个关键词
pig ext list -c RAG              # 按分类筛选
pig ext list -v 17               # 按 PG 版本筛选
pig ext ls olap                  # 列出 olap 类别扩展
pig ext ls gis -v 16             # 列出 PG 16 的 GIS 类扩展

选项:

  • -c|--category:按分类筛选(TIME, GIS, RAG, FTS, OLAP, FEAT, LANG, TYPE, UTIL, FUNC, ADMIN, STAT, SEC, FDW, SIM, ETL)
  • -v|--version:按 PG 版本筛选

默认扩展目录定义在 cli/ext/assets/extension.csv

可用 pig ext reload 命令更新到最新扩展目录,数据将下载到 ~/.pig/extension.csv

ext info

显示指定扩展的详细信息。

pig ext info postgis        # 显示 PostGIS 详细信息
pig ext info timescaledb    # 显示 TimescaleDB 信息
pig ext info vector postgis # 显示多个扩展信息

ext status

显示当前 PostgreSQL 实例已安装扩展的状态。

pig ext status              # 显示已安装扩展
pig ext status -c           # 包含 contrib 扩展
pig ext status -v 16        # 显示 PG 16 已安装扩展

选项:

  • -c|--contrib: 结果中包含 contrib 扩展

ext scan

扫描当前 PostgreSQL 实例已安装的扩展。

pig ext scan [-v version]

该命令会扫描 postgres 扩展目录,查找所有实际已安装的扩展。

ext add

安装一个或多个 PostgreSQL 扩展。也可以使用别名 pig install

pig ext add pg_duckdb            # 安装 pg_duckdb
pig ext add pg_duckdb -v 17      # 为 PG 17 安装
pig ext add pg_duckdb -y         # 自动确认安装
pig ext add vector postgis       # 安装多个扩展

# 使用别名
pig install pg_duckdb
pig install pg_duckdb -v 17 -y

# 安装 PostgreSQL 内核
pig ext install pgsql            # 安装最新版 postgresql 内核
pig ext a pg17                   # 安装 postgresql 17 内核包
pig ext ins pg16                 # 安装 postgresql 16 内核包
pig ext install pg15-core        # 安装 postgresql 15 核心包
pig ext install pg14-main -y     # 安装 pg 14 + 常用扩展(vector, repack, wal2json)

选项:

  • -v|--version:指定 PG 大版本
  • -y|--yes:自动确认安装
  • -n|--no-translation:禁用别名翻译

ext rm

移除一个或多个 PostgreSQL 扩展。也可以使用别名 pig remove

pig ext rm pg_duckdb             # 移除 pg_duckdb
pig ext rm pg_duckdb -v 17       # 移除 PG 17 版本
pig ext rm pgvector -y           # 自动确认移除
pig remove pg_duckdb             # 使用别名

ext update

将已安装扩展更新到最新版。

pig ext update                   # 更新所有已安装扩展
pig ext update pg_duckdb         # 更新特定扩展
pig ext update postgis timescaledb  # 更新多个扩展
pig ext update -y                # 自动确认更新

ext import

下载扩展包到本地仓库,便于离线安装。

pig ext import postgis                # 导入 PostGIS 包
pig ext import timescaledb pg_cron    # 导入多个扩展包
pig ext import pg16                   # 导入 PostgreSQL 16 包
pig ext import pgsql-common           # 导入常用工具包
pig ext import -d /www/pigsty postgis # 指定路径导入

选项:

  • -d|--repo: 指定仓库目录(默认:/www/pigsty

将指定 PG 版本链接到系统 PATH。

pig ext link 17                  # 链接 PG 17 到 PATH
pig ext link 16                  # 链接 PG 16 到 /usr/pgsql
pig ext link /usr/pgsql-16       # 从指定路径链接到 /usr/pgsql
pig ext link null                # 取消当前 PostgreSQL 链接

该命令会创建 /usr/pgsql 软链接,并写入 /etc/profile.d/pgsql.sh

ext reload

从 GitHub 刷新扩展元数据。

pig ext reload                   # 刷新扩展目录

更新后的文件会放置于 ~/.pig/extension.csv 中。

8 - pig repo

使用 pig repo 子命令管理软件仓库

pig repo 命令是一个综合性的软件包仓库管理工具。它提供了添加、移除、创建和管理软件仓库的功能,支持 RPM 系统(RHEL/CentOS/Rocky/Alma)和 Debian 系统(Debian/Ubuntu)。

命令描述备注
repo list打印可用仓库与模块列表
repo info获取仓库详细信息
repo status显示当前仓库状态
repo add添加新仓库需要 sudo 或 root 权限
repo set清空、覆盖并更新仓库需要 sudo 或 root 权限
repo rm移除仓库需要 sudo 或 root 权限
repo update更新仓库缓存需要 sudo 或 root 权限
repo create创建本地 YUM/APT 仓库需要 sudo 或 root 权限
repo cache从本地仓库创建离线包需要 sudo 或 root 权限
repo boot从离线包引导仓库需要 sudo 或 root 权限

快速入门

# 方法 1:清理干净现有仓库,添加所有必要仓库并更新缓存(推荐)
pig repo add all --remove --update    # 移除旧仓库,添加所有必要仓库,更新缓存

# 方法 1 变体:一步到位
pig repo set                          # = pig repo add all --remove --update

# 方法 2:温和方式 - 仅添加所需仓库,保留你目前的仓库配置
pig repo add pgsql                    # 添加 PGDG 和 Pigsty 仓库并更新缓存
pig repo add pigsty --region=china    # 添加 Pigsty 仓库,指定使用中国区域
pig repo add pgdg   --region=default  # 添加 PGDG ,指定使用默认区域
pig repo add infra  --region=europe   # 添加 INFRA 仓库 ,指定使用欧洲区域

# 如果上面没有-u|--update 选项一步到位,请额外执行此命令
pig repo update                       # 更新系统包缓存

模块

在 pig 中,APT/YUM 仓库被组织为 模块 —— 服务于特定目的的一组仓库。

模块说明仓库列表
all安装 PG 所需的全部核心模块node + infra + pgsql
pgsqlPGDG + Pigsty PG 扩展pigsty-pgsql + pgdg
pigstyPigsty Infra + PGSQL 仓库pigsty-infra, pigsty-pgsql
pgdgPGDG 官方仓库pgdg-common, pgdg13-18
nodeLinux 系统仓库base, updates, extras, epel…
infra基础设施组件仓库pigsty-infra, nginx, docker-ce
betaPostgreSQL Beta 版本pgdg19-beta, pgdg-beta
extraPGDG Non-Free 与三方扩展pgdg-extras, timescaledb, citus
groongaPGroonga 仓库groonga
mssqlWiltonDB 仓库wiltondb
perconaPercona PG + PG_TDEpercona

除此之外,pig 还自带了一些其他数据库的 APT/DNF 仓库:redis, kubernetes, grafana, clickhouse, gitlab, haproxy, mongodb, mysql,在此不再展开。

通常来说,为了安装 PostgreSQL node (Linux 系统仓库) 和 pgsql(PGDG + Pigsty)是必选项,infra 仓库是可选项(包含了一些工具,IvorySQL Kernel 等)。 您可以使用特殊的 all 模块,一次性添加所有需要的仓库到系统中,对绝大多数用户来说,这是合适的起点。

pig repo add all      # 添加 node,pgsql,infra 三个仓库到系统中
pig repo add          # 不添加任何参数时,默认使用 all 模块
pig repo set          # 使用 set 替代 add 时,将清理备份现有仓库定义并覆盖式更新

仓库定义

Pigsty 中可用仓库的完整定义位于 cli/repo/assets/repo.yml

您可以创建 ~/.pig/repo.yml 文件,显式修改并覆盖 pig 的仓库定义。在编辑仓库定义文件时,您可以在 baseurl 处添加额外的区域镜像,例如指定中国,欧洲地区的镜像仓库 URL。当 pig 使用 --region 参数指定特定的区域时,pig 会优先查找对应区域的仓库 URL,如果不存在,则会 Fallback 到 default 的仓库 URL。

repo list

pig repo list 将列出当前系统可用的所有仓库模块。

pig repo list                # 列出当前系统可用仓库
pig repo list all            # 列出所有仓库(不过滤)

repo info

显示特定仓库或模块的详细信息,包括 URL、元数据和区域镜像,以及 .repo / .list 仓库文件内容。

pig repo info pgdg               # 显示 pgdg 模块的信息
pig repo info pigsty pgdg        # 显示多个模块的信息
pig repo info all                # 显示所有模块的信息

repo status

显示系统上的当前仓库配置。

pig repo status

repo add

添加仓库配置文件到系统。需要 root/sudo 权限。

pig repo add pgdg                # 添加 PGDG 仓库
pig repo add pgdg pigsty         # 添加多个仓库
pig repo add all                 # 添加所有必要仓库 (pgdg + pigsty + node)
pig repo add pigsty -u           # 添加并更新缓存
pig repo add all -r              # 添加前移除现有仓库
pig repo add all -ru             # 移除、添加并更新(完全重置)
pig repo add pgdg --region=china # 使用中国镜像

选项:

  • -r|--remove:添加新仓库前移除现有仓库
  • -u|--update:添加仓库后运行包缓存更新
  • --region <region>:使用区域镜像仓库(default / china / europe
平台模块位置
EL/etc/yum.repos.d/<module>.repo
Debian/etc/apt/sources.list.d/<module>.list

repo set

等同于 repo add --remove --update。清空现有仓库并设置新仓库,然后更新缓存。

pig repo set                     # 替换为默认仓库
pig repo set pgdg pigsty         # 替换为特定仓库并更新
pig repo set all --region=china  # 使用中国镜像

repo rm

移除仓库配置文件并备份它们。

pig repo rm                      # 移除所有仓库
pig repo rm pgdg                 # 移除特定仓库
pig repo rm pgdg pigsty -u       # 移除并更新缓存
平台备份位置
EL/etc/yum.repos.d/backup/
Debian/etc/apt/sources.list.d/backup/

repo update

更新包管理器缓存以反映仓库更改。

pig repo update                  # 更新包缓存
平台等效命令
ELdnf makecache
Debianapt update

repo create

为离线安装创建本地包仓库。

pig repo create                  # 在默认位置创建 (/www/pigsty)
pig repo create /srv/repo        # 在自定义位置创建
平台依赖软件
ELcreaterepo_c
Debiandpkg-dev

repo cache

创建仓库内容的压缩 tarball 用于离线分发。

pig repo cache                   # 默认:/www 到 /tmp/pkg.tgz
pig repo cache -f                # 强制覆盖现有文件
pig repo cache -d /srv           # 自定义源目录

选项:

  • -d, --dir:源目录(默认:/www/
  • -p, --path:输出路径(默认:/tmp/pkg.tgz
  • -f:强制覆盖现有包

repo boot

从离线包解压并设置本地仓库。

pig repo boot                    # 默认:/tmp/pkg.tgz 到 /www
pig repo boot -p /mnt/pkg.tgz   # 自定义包路径
pig repo boot -d /srv           # 自定义目标目录

选项:

  • -p, --path:包路径(默认:/tmp/pkg.tgz
  • -d, --dir:目标目录(默认:/www/

9 - pig sty

使用 pig sty 子命令管理 Pigsty 安装

pig 也可作为 Pigsty 的命令行工具使用 —— 这是一款开箱即用的免费 PostgreSQL RDS 解决方案。 它为你的 PostgreSQL 集群带来高可用(HA)、PITR、监控、基础设施即代码(IaC)以及丰富的扩展支持。

命令描述备注
sty init安装 Pigsty
sty boot安装 Ansible 依赖需要 sudo 或 root 权限
sty conf生成配置
sty deploy运行部署 playbook
sty list列出可用 Pigsty 版本
sty get下载 Pigsty 源码压缩包

快速入门

你可以使用 pig sty 子命令在当前节点引导部署 Pigsty。

pig sty init                     # 安装 Pigsty 到 ~/pigsty
pig sty boot                     # 安装 Ansible 依赖
pig sty conf                     # 生成配置
pig sty deploy                   # 运行部署 playbook

详细入门指南请参阅:https://pigsty.io/docs/setup/install/

sty init

下载并安装 Pigsty 发行版到 ~/pigsty 目录。

pig sty init                   # 使用最新版本安装到 ~/pigsty
pig sty init -f                # 安装并覆盖已有 pigsty 目录
pig sty init -p /tmp/pigsty    # 安装到指定目录 /tmp/pigsty
pig sty init -v 3.4            # 获取并安装指定版本 v3.4.1
pig sty init 3                 # 获取并安装指定主版本 v3 最新

选项:

  • -p|--path:目标安装目录(默认 “~/pigsty”)
  • -f|--force:强制覆盖已存在的 pigsty 目录
  • -v|--version:pigsty 版本号
  • -d|--dir:下载目录(默认 “/tmp”)

sty boot

安装 Ansible 及其依赖。

pig sty boot                     # 安装 Ansible
pig sty boot -y                  # 自动确认
pig sty boot -r china            # 使用中国区域镜像
pig sty boot -k                  # 保留已有仓库
pig sty boot -p /path/to/pkg     # 指定离线包路径

选项:

  • -r|--region:区域(default, china, europe…)
  • -p|--path:离线包路径
  • -k|--keep:保留已有仓库

详见:https://pigsty.io/zh/docs/setup/offline/#bootstrap

sty conf

使用 ./configure 配置 Pigsty,生成配置文件。

pig sty conf                       # 使用默认 meta.yml 配置
pig sty conf -g                    # 生成随机密码(推荐!)
pig sty conf -c rich               # 使用 conf/rich.yml 模板(包含更多扩展)
pig sty conf -c ha/full            # 使用 conf/ha/full.yml 4 节点高可用模板
pig sty conf -c slim               # 使用 conf/slim.yml 模板(最小化安装)
pig sty conf -c supabase           # 使用 conf/supabase.yml 模板(自托管)
pig sty conf -v 17 -c rich         # 使用 conf/rich.yml 模板,PostgreSQL 17
pig sty conf -r china -s           # 使用中国区镜像源,跳过 IP 探测
pig sty conf -x                    # 从环境变量写入代理配置到配置文件
pig sty conf -c full -g -o ha.yml  # 完整 HA 模板,随机密码输出到 ha.yml

选项:

  • -c|--conf:配置模板名称(meta/rich/slim/full/supabase/…)
  • --ip:主节点 IP 地址
  • -v|--version:PostgreSQL 主版本(18/17/16/15/14/13)
  • -r|--region:上游仓库区域(default/china/europe)
  • -o|--output:输出配置文件路径(默认:pigsty.yml)
  • -s|--skip:跳过 IP 探测
  • -p|--port:SSH 端口
  • -x|--proxy:从环境变量写入代理配置
  • -n|--non-interactive:非交互模式
  • -g|--generate:生成随机默认密码(推荐!)

详见:https://pigsty.io/docs/setup/install/#configure

sty deploy

使用 deploy.yml 剧本部署 Pigsty。

pig sty deploy       # 执行 deploy.yml(如果找不到则使用 install.yml)
pig sty install      # 与 deploy 相同(向后兼容)
pig sty d            # 短别名
pig sty de           # 短别名
pig sty ins          # 短别名

此命令从您的 Pigsty 安装目录执行 deploy.yml 剧本。为保持向后兼容性,如果 deploy.yml 不存在但 install.yml 存在,将使用 install.yml 代替。

警告:此操作会修改您的系统。请谨慎使用!

sty list

列出可用的 Pigsty 版本。

pig sty list                     # 列出可用版本

sty get

下载 Pigsty 源码压缩包。

pig sty get                      # 下载最新版本
pig sty get v3.4.0               # 下载指定版本

10 - pig build

使用 pig build 子命令从源码构建扩展

pig build 命令是一个强大的工具,简化了从源码构建 PostgreSQL 扩展的整个工作流程。它提供了完整的构建基础设施设置、依赖管理,以及标准和自定义 PostgreSQL 扩展在不同操作系统上的编译环境。

命令描述备注
build spec初始化构建规范仓库
build repo初始化所需仓库需要 sudo 或 root 权限
build tool初始化构建工具需要 sudo 或 root 权限
build rust安装 Rust 工具链需要 sudo 或 root 权限
build pgrx安装并初始化 pgrx需要 sudo 或 root 权限
build proxy初始化构建代理
build get下载源代码 tarball
build dep安装扩展构建依赖需要 sudo 或 root 权限
build ext构建扩展包需要 sudo 或 root 权限
build pkg完整构建流程:get、dep、ext需要 sudo 或 root 权限

快速入门

设置构建环境并构建扩展的最快方式:

# 步骤 1:初始化构建规范
pig build spec

# 步骤 2:构建扩展(完整流程)
pig build pkg citus

# 构建的包将位于:
# - EL: ~/rpmbuild/RPMS/
# - Debian: ~/

更精细的控制方式:

# 设置环境
pig build spec                   # 初始化构建规范
pig build repo                   # 设置仓库
pig build tool                   # 安装构建工具

# 构建过程
pig build get citus              # 下载源码
pig build dep citus              # 安装依赖
pig build ext citus              # 构建包

# 或一次完成所有三个步骤
pig build pkg citus              # get + dep + ext

构建基础设施

目录结构

~/ext/                           # 默认构建规范目录
├── Makefile                     # 主构建 makefile
├── <extension>/                 # 每个扩展的目录
│   ├── Makefile                # 扩展特定的 makefile
│   ├── <extension>.spec        # RPM 规范文件(EL)
│   └── debian/                 # Debian 打包文件
│       ├── control
│       ├── rules
│       └── ...

构建输出位置:

  • EL 系统~/rpmbuild/RPMS/<arch>/
  • Debian 系统~/(deb 文件)

build spec

设置构建规范仓库和目录结构。

pig build spec                   # 在默认位置初始化 ~/ext

功能:

  1. 克隆或更新扩展构建规范仓库
  2. 创建必要的目录结构
  3. 设置 makefile 和构建脚本
  4. 准备平台特定的打包文件

仓库位置: 默认 ~/ext/,包含 100+ 扩展的构建规范。

build repo

初始化构建扩展所需的包仓库。

pig build repo                   # 等同于:pig repo set -ru

功能: 移除现有仓库、添加所有必需仓库(pgdg、pigsty、node)、更新包缓存。

build tool

安装必要的开发工具和编译器。

pig build tool                   # 安装默认工具集
pig build tool mini              # 最小工具集
pig build tool full              # 完整工具集
pig build tool rust              # 添加 Rust 开发工具

工具包:

  • 最小(mini): GCC/Clang 编译器、Make 和构建必需品、PostgreSQL 开发头文件、基本库
  • 默认: 所有最小工具、额外编译器(g++、clang++)、开发库、打包工具(rpmbuild、dpkg-dev)
  • 完整(full): 所有默认工具、语言特定工具(Python、Perl、Ruby 开发)、高级调试工具、性能分析工具

build rust

安装 Rust 编程语言工具链,基于 Rust 的扩展所需。

pig build rust                   # 带确认安装
pig build rust -y                # 自动确认安装

安装内容: Rust 编译器(rustc)、Cargo 包管理器、Rust 标准库、开发工具。

build pgrx

安装并初始化 PGRX(Rust 的 PostgreSQL 扩展框架)。

pig build pgrx                   # 安装最新稳定版 (0.16.1)
pig build pgrx -v 0.15.0         # 安装特定版本

前提条件: 必须先安装 Rust 工具链、PostgreSQL 开发头文件。

build proxy

为受限互联网访问的构建环境设置代理配置。

pig build proxy                  # 交互式设置
pig build proxy user@host:8080   # 直接配置
pig build proxy http://proxy.company.com:3128

build get

下载扩展源代码 tarball。

pig build get citus              # 单个扩展
pig build get citus pgvector     # 多个扩展
pig build get all                # 所有可用扩展
pig build get std                # 标准扩展

build dep

安装构建扩展所需的依赖。

pig build dep citus              # 单个扩展
pig build dep citus pgvector     # 多个扩展
pig build dep citus --pg 17,16   # 为特定 PG 版本

build ext

编译扩展并创建安装包。

pig build ext citus              # 构建单个扩展
pig build ext citus pgvector     # 构建多个
pig build ext citus --pg 17      # 为特定 PG 版本
pig build ext citus -s           # 包含调试符号(仅 RPM)

build pkg

执行完整的构建流程:下载、依赖和构建。

pig build pkg citus              # 构建单个扩展
pig build pkg citus pgvector     # 构建多个
pig build pkg citus --pg 17,16   # 为多个 PG 版本
pig build pkg citus -s           # 包含调试符号

常见工作流

工作流 1:构建标准扩展

# 1. 设置构建环境(一次性)
pig build spec
pig build repo
pig build tool

# 2. 构建扩展
pig build pkg pg_partman

# 3. 安装构建的包
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/pg_partman*.rpm  # EL
sudo dpkg -i ~/pg_partman*.deb                         # Debian

工作流 2:构建 Rust 扩展

# 1. 设置 Rust 环境
pig build spec
pig build tool
pig build rust -y
pig build pgrx

# 2. 构建 Rust 扩展
pig build pkg pgmq

# 3. 安装
sudo pig ext add pgmq

工作流 3:构建多个版本

# 为多个 PostgreSQL 版本构建扩展
pig build pkg citus --pg 15,16,17

# 结果为每个版本生成包:
# citus_15-*.rpm
# citus_16-*.rpm
# citus_17-*.rpm

故障排除

找不到构建工具

# 安装构建工具
pig build tool

# 对于特定编译器
sudo dnf groupinstall "Development Tools"  # EL
sudo apt install build-essential          # Debian

缺少依赖

# 安装扩展依赖
pig build dep <extension>

# 检查错误消息以了解特定包
# 如需要,手动安装
sudo dnf install <package>  # EL
sudo apt install <package>  # Debian

找不到 PostgreSQL 头文件

# 安装 PostgreSQL 开发包
sudo pig ext install pg17-devel

# 或指定 pg_config 路径
export PG_CONFIG=/usr/pgsql-17/bin/pg_config

Rust/PGRX 问题

# 重新安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 更新 PGRX
cargo install cargo-pgrx --force

# 重新初始化 PGRX
cargo pgrx init

扩展构建矩阵

常见构建的扩展

扩展类型构建时间复杂度特殊要求
pg_repackC快速简单
pg_partmanSQL/PLPGSQL快速简单
citusC中等中等
timescaledbC复杂CMake
postgisC非常慢复杂GDAL、GEOS、Proj
pg_duckdbC++中等中等C++17 编译器
pgroongaC中等中等Groonga 库
pgvectorC快速简单
plpython3C中等中等Python 开发
pgrx 扩展Rust复杂Rust、PGRX