PIG the PGPM
PostgreSQL Extension Ecosystem Package Manager
— Postgres Install Genius, the missing extension package manager for the PostgreSQL ecosystem
PIG is a command-line tool specifically designed for installing, managing, and building PostgreSQL and its extensions. Developed in Go, it’s ready to use out of the box, simple, and lightweight (4MB).
PIG is not a reinvented wheel, but rather a PiggyBack — a high-level abstraction layer that leverages existing Linux distribution package managers (apt/dnf).
It abstracts away the differences between operating systems, chip architectures, and PG major versions, allowing you to install and manage PG kernels and 431+ extensions with just a few simple commands.
Note: For extension installation, pig is not a mandatory component — you can still use apt/dnf package managers to directly access the Pigsty PGSQL repository.
Quick Start
Use the following command to install PIG on your system:
Default Installation (Cloudflare CDN):
curl -fsSL https://repo.pigsty.io/pig | bash
China Mirror:
curl -fsSL https://repo.pigsty.cc/pig | bash
After installation, you can get started with just a few commands. For example, to install PG 18 and the pg_duckdb extension:
$ pig repo set # One-time setup for Linux, Pigsty + PGDG repos (overwrites!)
$ pig install pg18 # Install PostgreSQL 18 kernel (native PGDG packages)
$ pig install pg_duckdb -v 18 # Install pg_duckdb extension (for PG 18)
$ pig install -y postgis timescaledb # Install multiple extensions for current active PG version
$ pig install -y vector # You can use extension name (vector) or package name (pgvector)!
Command Reference
Run pig help <command> to get detailed help for subcommands.
About
The pig CLI tool is developed by Vonng ([email protected]) and is open-sourced under the Apache 2.0 license.
You can also check out the PIGSTY project, which provides a complete PostgreSQL RDS DBaaS experience including extension delivery.
- PGEXT: Extension data and management tools
- PIG: PostgreSQL package manager
- PIGSTY: Batteries-included PostgreSQL distribution
1 - Getting Started
Quick start with pig, the PostgreSQL package manager
Here’s a simple getting started tutorial to help you experience the core capabilities of the PIG package manager.
Short Version
curl -fsSL https://repo.pigsty.io/pig | bash # Install PIG from Cloudflare
pig repo set # One-time setup for Linux, Pigsty + PGDG repos (overwrites!)
pig install -v 18 -y pg18 pg_duckdb vector # Install PG 18 kernel, pg_duckdb, pgvector extensions...
Installation
You can install pig with the following command:
Default Installation (Cloudflare CDN):
curl -fsSL https://repo.pigsty.io/pig | bash
China Mirror:
curl -fsSL https://repo.pigsty.cc/pig | bash
The PIG binary is approximately 4 MB and will automatically use rpm or dpkg to install the latest available version on Linux:
[INFO] kernel = Linux
[INFO] machine = x86_64
[INFO] package = rpm
[INFO] pkg_url = https://repo.pigsty.io/pkg/pig/v0.9.0/pig-0.9.0-1.x86_64.rpm
[INFO] download = /tmp/pig-0.7.2-1.x86_64.rpm
[INFO] downloading pig v0.7.2
curl -fSL https://repo.pigsty.io/pkg/pig/v0.7.2/pig-0.7.2-1.x86_64.rpm -o /tmp/pig-0.7.2-1.x86_64.rpm
######################################################################## 100.0%
[INFO] md5sum = 85d75c16dfd3ce935d9d889fae345430
[INFO] installing: rpm -ivh /tmp/pig-0.7.2-1.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:pig-0.7.2-1 ################################# [100%]
[INFO] pig v0.7.2 installed successfully
check https://ext.pigsty.io for details
Check Environment
PIG is a Go-written binary program, installed by default at /usr/bin/pig. pig version prints version information:
$ pig version
pig version 0.7.2 linux/amd64
build: HEAD 9cdb57a 2025-11-10T11:14:17Z
Use the pig status command to print the current environment status, OS code, PG installation status, and repository accessibility with latency.
$ pig status
# [Configuration] ================================
Pig Version : 0.7.2
Pig Config : /root/.pig/config.yml
Log Level : info
Log Path : stderr
# [OS Environment] ===============================
OS Distro Code : el10
OS OSArch : amd64
OS Package Type : rpm
OS Vendor ID : rocky
OS Version : 10
OS Version Full : 10.0
OS Version Code : el10
# [PG Environment] ===============================
No PostgreSQL installation found
No active PostgreSQL found in PATH:
- /root/.local/bin
- /root/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
# [Pigsty Environment] ===========================
Inventory Path : Not Found
Pigsty Home : Not Found
# [Network Conditions] ===========================
pigsty.cc ping ok: 612 ms
pigsty.io ping ok: 1222 ms
google.com request error
Internet Access : true
Pigsty Repo : pigsty.io
Inferred Region : china
Latest Pigsty Ver : v3.6.1
List Extensions
Use the pig ext list command to print the built-in PG extension data catalog.
[root@pg-meta ~]# pig ext list
Name Version Cate Flags License RPM DEB PG Ver Description
---- ------- ---- ------ ------- ------ ------ ------ ---------------------
timescaledb 2.23.0 TIME -dsl-- Timescale PIGSTY PIGSTY 15-18 Enables scalable inserts and complex queries for time-series dat...
timescaledb_toolkit 1.22.0 TIME -ds-t- Timescale PIGSTY PIGSTY 15-18 Library of analytical hyperfunctions, time-series pipelining, an...
timeseries 0.1.7 TIME -d---- PostgreSQL PIGSTY PIGSTY 13-18 Convenience API for time series stack
periods 1.2.3 TIME -ds--- PostgreSQL PGDG PGDG 13-18 Provide Standard SQL functionality for PERIODs and SYSTEM VERSIO...
temporal_tables 1.2.2 TIME -ds--r BSD 2-Clause PIGSTY PIGSTY 13-18 temporal tables
.........
pg_fact_loader 2.0.1 ETL -ds--x MIT PGDG PGDG 13-18 build fact tables with Postgres
pg_bulkload 3.1.22 ETL bds--- BSD 3-Clause PGDG PIGSTY 13-17 pg_bulkload is a high speed data loading utility for PostgreSQL
test_decoding - ETL --s--x PostgreSQL CONTRIB CONTRIB 13-18 SQL-based test/example module for WAL logical decoding
pgoutput - ETL --s--- PostgreSQL CONTRIB CONTRIB 13-18 Logical Replication output plugin
(431 Rows) (Flags: b = HasBin, d = HasDDL, s = HasLib, l = NeedLoad, t = Trusted, r = Relocatable, x = Unknown)
All extension metadata is defined in a data file named extension.csv.
This file is updated with each pig version release. You can update it directly using the pig ext reload command.
The updated file is placed in ~/.pig/extension.csv by default, which you can view and modify — you can also find the authoritative version of this data file in the project.
Add Repositories
To install extensions, you first need to add upstream repositories. pig repo can be used to manage Linux APT/YUM/DNF software repository configuration.
You can use the straightforward pig repo set to overwrite existing repository configuration, ensuring only necessary repositories exist in the system:
pig repo set # One-time setup for all repos including Linux system, PGDG, PIGSTY (PGSQL+INFRA)
Warning: pig repo set will backup and clear existing repository configuration, then add required repositories, implementing Overwrite semantics — please be aware!
Or choose the gentler pig repo add to add needed repositories:
pig repo add pgdg pigsty # Add PGDG official repo and PIGSTY supplementary repo
pig repo add pgsql # [Optional] You can also add PGDG and PIGSTY together as one "pgsql" module
pig repo update # Update cache: apt update / yum makecache
PIG will detect your network environment and choose to use Cloudflare global CDN or China cloud CDN, but you can force a specific region with the --region parameter.
pig repo set --region=china # Use China region mirror repos for faster downloads
pig repo add pgdg --region=default --update # Force using PGDG upstream repo
PIG itself doesn’t support offline installation. You can download RPM/DEB packages yourself and copy them to network-isolated production servers for installation.
The related PIGSTY project provides local software repositories that can use pig to install already-downloaded extensions from local repos.
Install PG
After adding repositories, you can use the pig ext add subcommand to install extensions (and related packages)
pig ext add -v 18 -y pgsql timescaledb postgis vector pg_duckdb pg_mooncake # Install PG 18 kernel and extensions, auto-confirm
# This command automatically translates packages to:
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 postgresql$v-llvmjit
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 postgresql18-llvmjit timescaledb-tsl_18* postgis36_18* pgvector_18* pg_duckdb_18* pg_mooncake_18*
This uses an “alias translation” mechanism to translate clean PG kernel/extension logical package names into actual RPM/DEB lists. If you don’t need alias translation, you can use apt/dnf directly,
or use the -n|--no-translation parameter with the variant pig install:
pig install vector # With translation, installs pgvector_18 or postgresql-18-pgvector for current PG 18
pig install vector -n # Without translation, installs the package literally named 'vector' (a log collector from pigsty-infra repo)
Alias Translation
PostgreSQL kernels and extensions correspond to a series of RPM/DEB packages. Remembering these packages is tedious, so pig provides many common aliases to simplify the installation process:
For example, on EL systems, the following aliases will be translated to the corresponding RPM package list on the right:
pgsql: "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl postgresql$v-llvmjit"
pg18: "postgresql18 postgresql18-server postgresql18-libs postgresql18-contrib postgresql18-plperl postgresql18-plpython3 postgresql18-pltcl postgresql18-llvmjit"
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 postgresql15-llvmjit postgresql15-test postgresql15-devel"
pg14-main: "postgresql14 postgresql14-server postgresql14-libs postgresql14-contrib postgresql14-plperl postgresql14-plpython3 postgresql14-pltcl postgresql14-llvmjit pg_repack_14* wal2json_14* pgvector_14*"
pg13-core: "postgresql13 postgresql13-server postgresql13-libs postgresql13-contrib postgresql13-plperl postgresql13-plpython3 postgresql13-pltcl postgresql13-llvmjit"
Note that the $v placeholder is replaced with the PG major version number, so when you use the pgsql alias, $v is actually replaced with 18, 17, etc.
Therefore, when you install the pg17-server alias, on EL it actually installs postgresql17-server, postgresql17-libs, postgresql17-contrib, and on Debian/Ubuntu it installs postgresql-17 — pig handles all the details.
Common PostgreSQL Aliases
EL alias translation list
"pgsql": "postgresql$v postgresql$v-server postgresql$v-libs postgresql$v-contrib postgresql$v-plperl postgresql$v-plpython3 postgresql$v-pltcl postgresql$v-llvmjit",
"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 postgresql$v-llvmjit",
"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 postgresql$v-llvmjit 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 alias translation
"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",
These aliases can be used directly and instantiated with major version numbers via parameters, or you can use alias variants with major version numbers: replacing pgsql with pg18, pg17, pgxx, etc.
For example, for PostgreSQL 18, you can directly use these aliases:
pgsql | pg18 | pg17 | pg16 | pg15 | pg14 | pg13 |
|---|
pgsql | pg18 | pg17 | pg16 | pg15 | pg14 | pg13 |
pgsql-mini | pg18-mini | pg17-mini | pg16-mini | pg15-mini | pg14-mini | pg13-mini |
pgsql-core | pg18-core | pg17-core | pg16-core | pg15-core | pg14-core | pg13-core |
pgsql-full | pg18-full | pg17-full | pg16-full | pg15-full | pg14-full | pg13-full |
pgsql-main | pg18-main | pg17-main | pg16-main | pg15-main | pg14-main | pg13-main |
pgsql-client | pg18-client | pg17-client | pg16-client | pg15-client | pg14-client | pg13-client |
pgsql-server | pg18-server | pg17-server | pg16-server | pg15-server | pg14-server | pg13-server |
pgsql-devel | pg18-devel | pg17-devel | pg16-devel | pg15-devel | pg14-devel | pg13-devel |
pgsql-basic | pg18-basic | pg17-basic | pg16-basic | pg15-basic | pg14-basic | pg13-basic |
Install Extensions
pig detects the PostgreSQL installation in the current system environment. If it detects an active PG installation (based on pg_config in PATH), pig will automatically install extensions for that PG major version without you explicitly specifying it.
pig install pg_smtp_client # Simpler
pig install pg_smtp_client -v 18 # Explicitly specify major version, more stable and reliable
pig install pg_smtp_client -p /usr/lib/postgresql/16/bin/pg_config # Another way to specify PG version
dnf install pg_smtp_client_18 # Most direct... but not all extensions are this simple...
Tip: To add a specific major version of PostgreSQL kernel binaries to PATH, use the pig ext link command:
pig ext link pg17 # Create /usr/pgsql symlink and write to /etc/profile.d/pgsql.sh
. /etc/profile.d/pgsql.sh # Take effect immediately, update PATH environment variable
If you want to install a specific version of software, you can use the name=ver syntax:
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
Warning: Note that currently only PGDG YUM repository provides historical extension versions. PIGSTY repository and PGDG APT repository only provide the latest version of extensions.
Show Extensions
The pig ext status command can be used to show currently installed extensions.
$ 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
If PostgreSQL cannot be found in your current system path (based on pg_config in PATH), please make sure to specify the PG major version number or pg_config path via -v|-p.
Scan Extensions
pig ext scan provides lower-level extension scanning functionality, scanning shared libraries in the specified PostgreSQL directory to discover installed extensions:
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
Container Practice
You can create a fresh virtual machine, or use the following Docker container for testing. Create a d13 directory with a 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 # Add China region repositories
pig install -y pg18 # Install PGDG 18 kernel packages
pig install -y postgis timescaledb pgvector pg_duckdb
2 - Introduction
Why do we need yet another package manager? Especially for Postgres extensions?
Have you ever struggled with installing or upgrading PostgreSQL extensions? Digging through outdated documentation, cryptic configuration scripts, or searching GitHub for forks and patches?
Postgres’s rich extension ecosystem also means complex deployment processes — especially tricky across multiple distributions and architectures. PIG can solve these headaches for you.
This is exactly why Pig was created. Developed in Go, Pig is dedicated to one-stop management of Postgres and its 430+ extensions.
Whether it’s TimescaleDB, Citus, PGVector, 30+ Rust extensions, or all the components needed to self-host Supabase — Pig’s unified CLI makes everything accessible.
It completely eliminates source compilation and messy repositories, directly providing version-aligned RPM/DEB packages that perfectly support Debian, Ubuntu, RedHat, and other mainstream distributions on both x86 and Arm architectures — no guessing, no hassle.
Pig isn’t reinventing the wheel; it fully leverages native system package managers (APT, YUM, DNF) and strictly follows PGDG official packaging standards for seamless integration.
You don’t need to choose between “the standard way” and “shortcuts”; Pig respects existing repositories, follows OS best practices, and coexists harmoniously with existing repositories and packages.
If your Linux system and PostgreSQL major version aren’t in the supported list, you can use pig build to compile extensions for your specific combination.
Want to supercharge your Postgres and escape the hassle? Visit the PIG official documentation for guides and check out the extensive extension list,
turning your local Postgres database into an all-capable multi-modal data platform with one click.
If Postgres’s future is unmatched extensibility, then Pig is the magic lamp that helps you unlock it. After all, no one ever complains about “too many extensions.”
ANNOUNCE pig: The Postgres Extension Wizard
Linux Compatibility
PIG and the Pigsty extension repository support the following Linux distribution and PostgreSQL version combinations:
| OS Code | Vendor | Major | Minor | Full Name | PG Versions | Notes |
|---|
el7.x86_64 | EL | 7 | 7.9 | CentOS 7 x86 | 13-15 | EOL |
el8.x86_64 | EL | 8 | 8.10 | RockyLinux 8 x86 | 13-18 | Near EOL |
el8.aarch64 | EL | 8 | 8.10 | RockyLinux 8 ARM | 13-18 | Near EOL |
el9.x86_64 | EL | 9 | 9.6 | RockyLinux 9 x86 | 13-18 | ✅ |
el9.aarch64 | EL | 9 | 9.6 | RockyLinux 9 ARM | 13-18 | ✅ |
el10.x86_64 | EL | 10 | 10.0 | RockyLinux 10 x86 | 13-18 | ✅ |
el10.aarch64 | EL | 10 | 10.0 | RockyLinux 10 ARM | 13-18 | ✅ |
d11.x86_64 | Debian | 11 | 11.11 | Debian 11 x86 | 13-18 | EOL |
d11.aarch64 | Debian | 11 | 11.11 | Debian 11 ARM | 13-18 | EOL |
d12.x86_64 | Debian | 12 | 12.12 | Debian 12 x86 | 13-18 | ✅ |
d12.aarch64 | Debian | 12 | 12.12 | Debian 12 ARM | 13-18 | ✅ |
d13.x86_64 | Debian | 13 | 13.1 | Debian 13 x86 | 13-18 | ✅ |
d13.aarch64 | Debian | 13 | 13.1 | Debian 13 ARM | 13-18 | ✅ |
u20.x86_64 | Ubuntu | 20 | 20.04.6 | Ubuntu 20.04 x86 | 13-18 | EOL |
u20.aarch64 | Ubuntu | 20 | 20.04.6 | Ubuntu 20.04 ARM | 13-18 | EOL |
u22.x86_64 | Ubuntu | 22 | 22.04.5 | Ubuntu 22.04 x86 | 13-18 | ✅ |
u22.aarch64 | Ubuntu | 22 | 22.04.5 | Ubuntu 22.04 ARM | 13-18 | ✅ |
u24.x86_64 | Ubuntu | 24 | 24.04.3 | Ubuntu 24.04 x86 | 13-18 | ✅ |
u24.aarch64 | Ubuntu | 24 | 24.04.3 | Ubuntu 24.04 ARM | 13-18 | ✅ |
Notes:
- EL refers to RHEL-compatible distributions, including RHEL, CentOS, RockyLinux, AlmaLinux, OracleLinux, etc.
- EOL indicates the operating system has reached or is about to reach end of support; upgrading to a newer version is recommended
- ✅ indicates full support; recommended for use
- PG versions 13-18 means support for PostgreSQL 13, 14, 15, 16, 17, and 18 major versions
3 - Installation
How to download and install the pig package manager
Script Installation
The simplest way to install pig is to run the following installation script:
Default Installation (Cloudflare CDN):
curl -fsSL https://repo.pigsty.io/pig | bash
China Mirror:
curl -fsSL https://repo.pigsty.cc/pig | bash
This script downloads the latest pig RPM/DEB package from the Pigsty software repository and installs it using rpm or dpkg.
Specify Version
You can specify a particular version to install by passing the version number as an argument:
Default Installation (Cloudflare CDN):
curl -fsSL https://repo.pigsty.io/pig | bash -s 0.9.0
China Mirror:
curl -fsSL https://repo.pigsty.cc/pig | bash -s 0.9.0
Download from Release Page
You can also download pig installation packages (RPM/DEB/tarball) directly from the Pigsty repository: GitHub Latest Release Page
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
After extracting, place the binary file in your system PATH.
Repository Installation
The pig software is located in the pigsty-infra repository. You can add this repository to your operating system and then install using the OS package manager:
YUM
For RHEL, RockyLinux, CentOS, Alma Linux, OracleLinux, and other EL distributions:
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
For Debian, Ubuntu, and other DEB distributions:
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
Update
To upgrade an existing pig version to the latest available version, use the following command:
pig update # Upgrade pig itself to the latest version
To update the extension data of an existing pig to the latest available version, use the following command:
pig ext reload # Update pig extension data to the latest version
Uninstall
apt remove -y pig # Debian / Ubuntu and other Debian-based systems
yum remove -y pig # RHEL / CentOS / RockyLinux and other EL distributions
rm -rf /usr/bin/pig # If installed directly from binary, just delete the binary file
Build from Source
You can also build pig yourself. pig is developed in Go and is very easy to build. The source code is hosted at github.com/pgsty/pig
git clone https://github.com/pgsty/pig.git; cd pig
go get -u; go build
All RPM/DEB packages are automatically built through GitHub CI/CD workflow using goreleaser.
4 - Release
pig — PostgreSQL Package Manager Release Notes
The latest stable version is v0.9.0.
| Version | Date | Summary | GitHub |
|---|
| v0.9.0 | 2025-12-28 | Adjust pig sty command options, fix alias | v0.9.0 |
| v0.8.0 | 2025-12-26 | 440 extensions, remove sysupdate repo | v0.8.0 |
| v0.7.5 | 2025-12-12 | Routine extension update, fixed aliyun mirror | v0.7.5 |
| v0.7.4 | 2025-12-01 | Update ivory/pgtde kernel and pgdg extras | v0.7.4 |
| v0.7.3 | 2025-11-24 | Fix repo for el10 & debian13 | v0.7.3 |
| v0.7.2 | 2025-11-20 | 437 extensions, fix pig build issue | v0.7.2 |
| v0.7.1 | 2025-11-10 | New Website, improve in-docker experience | v0.7.1 |
| v0.7.0 | 2025-11-05 | Build Enhancement and massive upgrade | v0.7.0 |
| v0.6.2 | 2025-10-03 | PG 18 official Repo | v0.6.2 |
| v0.6.1 | 2025-08-14 | CI/CD, el10 stub, PGDG CN Mirror | v0.6.1 |
| v0.6.0 | 2025-07-17 | 423 extension, percona pg_tde, mcp toolbox | v0.6.0 |
| v0.5.0 | 2025-06-30 | 422 extension, new extension catalog | v0.5.0 |
| v0.4.2 | 2025-05-27 | 421 extension, halo & oriole deb | v0.4.2 |
| v0.4.1 | 2025-05-07 | 414 extension, pg18 alias support | v0.4.1 |
| v0.4.0 | 2025-05-01 | do & pt sub-cmd, halo & orioledb | v0.4.0 |
| v0.3.4 | 2025-04-05 | routine update | v0.3.4 |
| v0.3.3 | 2025-03-25 | alias, repo, deps | v0.3.3 |
| v0.3.2 | 2025-03-21 | new extensions | v0.3.2 |
| v0.3.1 | 2025-03-19 | minor bug fix | v0.3.1 |
| v0.3.0 | 2025-02-24 | new home page and extension catalog | v0.3.0 |
| v0.2.2 | 2025-02-22 | 404 extensions | v0.2.2 |
| v0.2.0 | 2025-02-14 | 400 extensions | v0.2.0 |
| v0.1.4 | 2025-02-12 | routine bugfix | v0.1.4 |
| v0.1.3 | 2025-01-23 | 390 extensions | v0.1.3 |
| v0.1.2 | 2025-01-12 | the anon extension and 350 other ext | v0.1.2 |
| v0.1.1 | 2025-01-09 | Update Extension List | v0.1.1 |
| v0.1.0 | 2024-12-29 | repo, ext, sty, and self-update | v0.1.0 |
| v0.0.1 | 2024-12-23 | Genesis Release | v0.0.1 |
v0.9.0
- Refactor command
pig sty install to pig sty deploy - Add new parameters for command
pig sty conf, aligned with configure script - Add llvmjit package to pgsql-full alias
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.9.0
v0.8.0
Extension Updates
- Total extensions reached 440
- New extension: pg_ai_query 0.1.1
- New extension: pg_textsearch 0.1.0
- New extension: pg_clickhouse 0.1.0
- pg_biscuit upgraded from 1.0 to 2.0.1 (switched to new repo, renamed to biscuit)
- pg_search upgraded from 0.20.3 to 0.20.5
- pg_duckdb upgraded to official release 1.1.1
- vchord_bm25 upgraded from 0.2.2 to 0.3.0
- pg_semver upgraded from 0.40.0 to 0.41.0
- pg_timeseries upgraded from 0.1.7 to 0.1.8
- Fixed debian/ubuntu pg18 extension issues: supautils, pg_summarize, pg_vectorize, pg_tiktoken, pg_tzf, pglite_fusion, pgsmcrypto, pgx_ulid, plprql
- Pigsty version synced to 4.0.0
Repository Updates
- Removed pgdg yum sysupdate repo due to upstream changes
- Removed pgdg yum llvmjit package due to upstream changes
- Fixed patroni 3.0.4 duplicate package issue on el9.aarch64
- Added priority for el repo definitions, docker repo skipped when unavailable
- Added epel 10 / pgdg 9/10 OS minor version hotfix
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.8.0
v0.7.5
Extension Updates
- 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
Repository Updates
Use the fixed Aliyun PGDG mirror repository
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.5
v0.7.4
- Update extension metadata:
pg_search, pgmq, pg_stat_monitor - Update pgdg repo URL, the
extras now move to parent directory - Bump ivorysql to 5.0 (compatible with PG 18.0)
- Bump Percona Postgres TDE Kernel to 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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.4
v0.7.3
- Add new command:
pig repo reload to update repo metadata - Fix EL PGDG sysupdate aarch64 repo issue (now aarch64 repo ready)
- Fix EL10.aarch64 PGDG repo renaming issue
- Update extension versions
- Bump Pigsty version to 3.7.0
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.3
v0.7.2
Extension list update, + 6 new extensions, 437 total
Add PGDG EL10 Sysupdate repo
Add LLVM APT repo
Use local extension.csv catalog in pig build sub command
Updated extensions: vchord pg_later pgvectorscale pglite_fusion pgx_ulid pg_search citus timescaledb pg_profile pg_stat_monitor documentdb
New extensions: pglinter pg_typeid pg_enigma pg_retry pg_biscuit pg_weighted_statistics
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.2
v0.7.1
- The brand-new website: https://pgext.cloud
- Remove unnecessary sudo usage, now can be used inside docker
- Allow using
pg18, pg17 arg format in pig ext link command - Add environment var
PIG_NO_SUDO to force not using sudo - RPM Changelog: Add PG 18 support to almost all extensions
- DEB Changelog: Add PG 18 support to almost all extensions
- Infra Changelog: Routine update to the latest version
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.1
v0.7.0
- Add support for Debian 13 and EL 10 distributions
- Massive extension updates to the latest versions with PostgreSQL 18 support
- Almost all Rust extensions now support PG 18 via pgrx 0.16.1
pig build command overhaulpig build pkg <pkg> will now download source, prepare deps, and build in one gopig build pgrx is now separated from pig build rustpig build pgrx [-v pgrx_version] can now use existing PG installation directlypig build dep will now handle extension dependencies on both EL and Debian systemspig build ext now has more compact and elegant output, can build RPM on EL without build scriptpig build spec now supports downloading spec files directly from Pigsty repopig build repo / pig repo add / pig repo set now use node,pgsql,infra as default repo modules instead of node,pgdg,pigsty
- Optimized error logging
- Brand new catalog website based on hugo and hextra
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.7.0
v0.6.2
- Use official PG 18 repo instead of testing repo
- Add
v prefix when specifying pigsty version string - Improved network connectivity check
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.6.2
v0.6.1
- Add el10 and debian 13 trixie support stub
- Dedicated website: https://pgext.cloud/pig
- Rebuild with go 1.25 and CI/CD pipeline
- Use PIGSTY PGDG mirror in mainland China
- Remove unused
pgdg-el10fix repo - Use Pigsty WiltonDB mirror
- Add EL 10 dedicated epel repo
- pig version output with go build environment
Release: https://github.com/pgsty/pig/releases/tag/v0.6.1
v0.6.0
- New extension catalog: https://ext.pgsty.com
- New subcommand:
pig install to simplify pig ext install - Add new kernel support: percona with pg_tde
- Add new package: Google GenAI MCP toolbox for databases
- Add new repo: percona repo and clickhouse repo
- Change extension summary info links to https://ext.pgsty.com
- Fix orioledb broken on the Debian/Ubuntu system
- Fix epel repo on EL distributions
- Bump golang to 1.24.5
- Bump pigsty to v3.6.0
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.6.0
v0.5.0
- Update the extension list to 422
- New extension: pgactive from AWS
- Bump timescaledb to 2.20.3
- Bump citus to 13.1.0
- Bump vchord to 0.4.3
- Bug fix pgvectorscale debian/ubuntu pg17 failure
- Bump kubernetes repo to 1.33
- Bump default pigsty version to 3.5.0
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.5.0
v0.4.2
- Update the extension list to 421
- Add openhalo/orioledb support for Debian / Ubuntu
- 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 for debian/ubuntu
- orioledb 1.4.0 beta11
- Add el7 repo back
Checksums
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
Release: https://github.com/pgsty/pig/releases/tag/v0.4.2
v0.4.1
- Update the extension list to 414
- Add
citus_wal2json and citus_pgoutput to pig ext scan mapping - Add PG 18 beta repo
- Add PG 18 package alias
Release: https://github.com/pgsty/pig/releases/tag/v0.4.1
v0.4.0
- Updated extension list, available extensions reached 407
- Added
pig do subcommand for executing Pigsty playbook tasks - Added
pig pt subcommand for wrapping Patroni command-line tools - Added extension aliases:
openhalo and orioledb - Added
gitlab-ce / gitlab-ee repository distinction - Built with the latest Go 1.24.2 and upgraded dependency versions
- Fixed
pig ext status panic issue under specific conditions - Fixed
pig ext scan unable to match several extensions
Release: https://github.com/pgsty/pig/releases/tag/v0.4.0
v0.3.4
curl https://repo.pigsty.io/pig | bash -s 0.3.4
- Routine extension metadata update
- Use aliyun epel mirror instead of broken tsinghua tuna mirror
- Bump pigsty version string
- Add
gitlab repo to the repo list
Release: https://github.com/pgsty/pig/releases/tag/v0.3.4
v0.3.3
- Add
pig build dep command to install extension build dependencies - Update default repo list
- Use pigsty.io mirror for
mssql module (wiltondb/babelfish) - Merge docker module into
infra - Remove pg16/17 from el7 target
- Allow installing extensions in el7
- Update package alias
Release: https://github.com/pgsty/pig/releases/tag/v0.3.3
v0.3.2
Enhancement
- New extensions
- Use
upx to reduce binary size - Remove embedded pigsty to reduce binary size
Release: https://github.com/pgsty/pig/releases/tag/v0.3.2
v0.3.1
Routine bugfix
- Fix repo format string
- Fix ext info links
- Update pg_mooncake metadata
Release: https://github.com/pgsty/pig/releases/tag/v0.3.1
v0.3.0
The pig project now has a new homepage, along with the PostgreSQL Extension Catalog.
Release: https://github.com/pgsty/pig/releases/tag/v0.3.0
v0.2.2
404 Extensions Available in Pig v0.2.2
Release: https://github.com/pgsty/pig/releases/tag/v0.2.2
v0.2.0
Release: https://github.com/pgsty/pig/releases/tag/v0.2.0
v0.1.4
Release: https://github.com/pgsty/pig/releases/tag/v0.1.4
v0.1.3
v0.1.3, routine update, with 390 extensions available now!
Release: https://github.com/pgsty/pig/releases/tag/v0.1.3
v0.1.2
351 PostgreSQL Extensions, including the powerful postgresql-anonymizer 2.0
Release: https://github.com/pgsty/pig/releases/tag/v0.1.2
v0.1.0
pig CLI v0.1 released
Release: https://github.com/pgsty/pig/releases/tag/v0.1.0
v0.0.1
Genesis Release
Release: https://github.com/pgsty/pig/releases/tag/v0.0.1
5 - Command Reference
6 - CMD: pig
pig CLI command reference overview
The pig CLI provides comprehensive tools for managing PostgreSQL installations, extensions, repositories, and building extensions from source. Check command documentation with pig help <command>.
Overview
pig - the Linux Package Manager for PostgreSQL
Usage:
pig [command]
Examples:
pig repo add -ru # overwrite existing repo & update cache
pig install pg17 # install postgresql 17 PGDG package
pig install pg_duckdb # install certain postgresql extension
pig install pgactive -v 18 # install extension for specifc pg major
check https://pgext.cloud for details
PostgreSQL Extension Manager
build Build Postgres Extension
ext Manage PostgreSQL Extensions (pgext)
repo Manage Linux Software Repo (apt/dnf)
install Install packages using native package manager
Pigsty Management Commands
do Run admin tasks
sty Manage Pigsty installation
Additional Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
status Show Environment Status
update Upgrade pig itself
version Show pig version info
Flags:
--debug enable debug mode
-h, --help help for pig
-H, --home string pigsty home path
-i, --inventory string config inventory path
--log-level string log level: debug, info, warn, error, fatal, panic (default "info")
--log-path string log file path, terminal by default
Use "pig [command] --help" for more information about a command.
pig repo
Manage APT/YUM repositories for PostgreSQL packages. See pig repo for details.
pig repo list # List available repositories
pig repo info pgdg # Show repository details
pig repo status # Check current repo status
pig repo add pgdg pigsty -u # Add repositories
pig repo rm old-repo # Remove repositories
pig repo update # Update package cache
pig repo create /www/pigsty # Create local repository
pig repo cache # Create offline package
pig repo boot # Bootstrap from offline package
pig ext
Manage PostgreSQL extensions and kernel packages. See pig ext for details.
pig ext list duck # Search extensions
pig ext info pg_duckdb # Extension details
pig ext status # Show installed extensions
pig ext add pg_duckdb -y # Install extension
pig ext rm old_extension # Remove extension
pig ext update # Update extensions
pig ext scan # Scan installed extensions
pig ext import pg_duckdb # Download for offline use
pig ext link 17 # Link PG version to PATH
pig ext reload # Refresh extension catalog
pig build
Build PostgreSQL extensions from source. See pig build for details.
# Environment setup
pig build spec # Initialize build specs
pig build repo # Setup repositories
pig build tool # Install build tools
pig build rust -y # Install Rust (for Rust extensions)
pig build pgrx # Install PGRX framework
# Build extensions
pig build pkg citus # Complete build pipeline = get + dep + ext
pig build get citus # Download source
pig build dep citus # Install dependencies
pig build ext citus # Build package
pig sty
Install Pigsty distribution. See pig sty for details.
pig sty init # Install Pigsty to ~/pigsty
pig sty boot # Install Ansible prerequisites
pig sty conf # Generate configuration
pig sty deploy # Run deployment playbook
7 - CMD: pig ext
Manage PostgreSQL extensions with pig ext subcommand
The pig ext command is a comprehensive tool for managing PostgreSQL extensions.
It allows users to search, install, remove, update, and manage PostgreSQL extensions and even kernel packages.
| Command | Description | Notes |
|---|
ext list | Search extensions | |
ext info | Show extension details | |
ext status | Show installed extensions | |
ext add | Install extensions | Requires sudo or root |
ext rm | Remove extensions | Requires sudo or root |
ext update | Update extensions | Requires sudo or root |
ext scan | Scan installed extensions | |
ext import | Download for offline use | Requires sudo or root |
ext link | Link PG version to PATH | Requires sudo or root |
ext reload | Refresh extension catalog | |
Quick Start
pig ext list # List all extensions
pig ext list duck # Search for "duck" extensions
pig ext info pg_duckdb # Show pg_duckdb extension info
pig install pg_duckdb # Install pg_duckdb extension
pig install pg_duckdb -v 17 # Install pg_duckdb for PG 17
pig ext status # Show installed extensions
ext list
List or search extensions.
pig ext list # List all extensions
pig ext list duck # Search for "duck" extensions
pig ext list vector ai # Search multiple keywords
pig ext list -c RAG # Filter by category
pig ext list -v 17 # Filter by PG version
Options:
-c|--category: Filter by category (TIME, GIS, RAG, FTS, OLAP, FEAT, LANG, TYPE, UTIL, FUNC, ADMIN, STAT, SEC, FDW, SIM, ETL)-v|--version: Filter by PG version
ext info
Display detailed information about specific extensions.
pig ext info pg_duckdb # Show pg_duckdb info
pig ext info vector postgis # Show info for multiple extensions
ext status
Display the status of installed extensions for the active PostgreSQL instance.
pig ext status # Show installed extensions
pig ext status -v 17 # Show installed extensions for PG 17
ext add
Install extensions. Also available via alias pig install.
pig ext add pg_duckdb # Install pg_duckdb
pig ext add pg_duckdb -v 17 # Install for PG 17
pig ext add pg_duckdb -y # Auto-confirm installation
pig ext add vector postgis # Install multiple extensions
# Using alias
pig install pg_duckdb
pig install pg_duckdb -v 17 -y
Options:
-v|--version: Specify PG major version-y|--yes: Auto-confirm installation-n|--no-translation: Disable alias translation
ext rm
Remove extensions. Also available via alias pig remove.
pig ext rm pg_duckdb # Remove pg_duckdb
pig ext rm pg_duckdb -v 17 # Remove for PG 17
pig remove pg_duckdb # Using alias
ext update
Update installed extensions.
pig ext update # Update all extensions
pig ext update pg_duckdb # Update specific extension
ext scan
Scan installed PostgreSQL installations and their extensions.
pig ext scan # Scan all installed PG versions
pig ext scan -v 17 # Scan PG 17
ext import
Download extension packages for offline use.
pig ext import pg_duckdb # Download pg_duckdb
pig ext import pg_duckdb -v 17 # Download for PG 17
ext link
Link a specific PG version to the system PATH.
pig ext link 17 # Link PG 17 to PATH
This command creates a /usr/pgsql symlink and writes to /etc/profile.d/pgsql.sh.
ext reload
Refresh extension metadata from GitHub.
pig ext reload # Refresh extension catalog
The updated file is placed in ~/.pig/extension.csv.
Examples
To install PostgreSQL extensions, you’ll have to add the repo first:
pig repo add pgdg pigsty -u # gentle way to add pgdg and pigsty repo
pig repo set -u # brute way to remove and add all required repos
Then you can search and install PostgreSQL extensions:
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
Check extension list for available extensions and their names.
Notes:
- When no PostgreSQL version is specified, the tool will try to detect the active PostgreSQL installation from
pg_config in your PATH - PostgreSQL can be specified either by major version number (
-v) or by pg_config path (-p). If -v is given, pig will use the well-known default path of PGDG kernel packages for the given version.- On EL distros, it’s
/usr/pgsql-$v/bin/pg_config for PG$v - On DEB distros, it’s
/usr/lib/postgresql/$v/bin/pg_config for PG$v - If
-p is given, pig will use the pg_config path to find the PostgreSQL installation
- The extension manager supports different package formats based on the underlying operating system:
- RPM packages for RHEL/CentOS/Rocky Linux/AlmaLinux
- DEB packages for Debian/Ubuntu
- Some extensions may have dependencies that will be automatically resolved during installation
- Use the
-y flag with caution as it will automatically confirm all prompts
Pigsty assumes you already have installed the official PGDG kernel packages. If not, you can install them with:
pig ext install pg17 # install PostgreSQL 17 kernels (all but devel)
8 - CMD: pig repo
Manage software repositories with pig repo subcommand
The pig repo command is a comprehensive tool for managing package repositories on Linux systems. It provides functionality to add, remove, create, and manage software repositories for both RPM-based (RHEL/CentOS/Rocky/Alma) and Debian-based (Debian/Ubuntu) distributions.
| Command | Description | Notes |
|---|
repo list | Print available repo and module list | |
repo info | Get repo detailed information | |
repo status | Show current repo status | |
repo add | Add new repository | Requires sudo or root |
repo set | Wipe, overwrite, and update repository | Requires sudo or root |
repo rm | Remove repository | Requires sudo or root |
repo update | Update repo cache | Requires sudo or root |
repo create | Create local YUM/APT repository | Requires sudo or root |
repo cache | Create offline package from local repo | Requires sudo or root |
repo boot | Bootstrap repo from offline package | Requires sudo or root |
Quick Start
# Method 1: Clean existing repos, add all necessary repos and update cache (recommended)
pig repo add all --remove --update # Remove old repos, add all essentials, update cache
# Method 1 variant: One-step
pig repo set # = pig repo add all --remove --update
# Method 2: Gentle approach - only add required repos, keep existing config
pig repo add pgsql # Add PGDG and Pigsty repos with cache update
pig repo add pigsty --region=china # Add Pigsty repo, specify China region
pig repo add pgdg --region=default # Add PGDG, specify default region
pig repo add infra --region=europe # Add INFRA repo, specify Europe region
# If no -u|--update option above, run this command additionally
pig repo update # Update system package cache
Modules
In pig, APT/YUM repositories are organized into modules — groups of repositories serving a specific purpose.
| Module | Description | Repository List |
|---|
all | All core modules needed to install PG | node + infra + pgsql |
pgsql | PGDG + Pigsty PG extensions | pigsty-pgsql + pgdg |
pigsty | Pigsty Infra + PGSQL repos | pigsty-infra, pigsty-pgsql |
pgdg | PGDG official repository | pgdg-common, pgdg13-18 |
node | Linux system repositories | base, updates, extras, epel… |
infra | Infrastructure component repos | pigsty-infra, nginx, docker-ce |
repo add
Add repository configuration files to the system. Requires root/sudo privileges.
pig repo add pgdg # Add PGDG repository
pig repo add pgdg pigsty # Add multiple repositories
pig repo add all # Add all essential repos (pgdg + pigsty + node)
pig repo add pigsty -u # Add and update cache
pig repo add all -r # Remove existing repos before adding
pig repo add all -ru # Remove, add, and update (complete reset)
pig repo add pgdg --region=china # Use China mirrors
Options:
-r|--remove: Remove existing repos before adding new ones-u|--update: Run package cache update after adding repos--region <region>: Use regional mirror repositories (default / china / europe)
repo set
Equivalent to repo add --remove --update. Wipes existing repositories and sets up new ones, then updates cache.
pig repo set # Replace with default repos
pig repo set pgdg pigsty # Replace with specific repos and update
pig repo set all --region=china # Use China mirrors
repo rm
Remove repository configuration files and back them up.
pig repo rm # Remove all repos
pig repo rm pgdg # Remove specific repo
pig repo rm pgdg pigsty -u # Remove and update cache
repo update
Update package manager cache to reflect repository changes.
pig repo update # Update package cache
| Platform | Equivalent Command |
|---|
| EL | dnf makecache |
| Debian | apt update |
repo create
Create local package repository for offline installations.
pig repo create # Create at default location (/www/pigsty)
pig repo create /srv/repo # Create at custom location
repo cache
Create compressed tarball of repository contents for offline distribution.
pig repo cache # Default: /www to /tmp/pkg.tgz
pig repo cache -f # Force overwrite existing
pig repo cache -d /srv # Custom source directory
repo boot
Extract and set up local repository from offline package.
pig repo boot # Default: /tmp/pkg.tgz to /www
pig repo boot -p /mnt/pkg.tgz # Custom package path
pig repo boot -d /srv # Custom target directory
Common Scenarios
Scenario 1: Fresh PostgreSQL Installation
# Setup repositories
sudo pig repo add -ru
# Install PostgreSQL 17
sudo pig ext install pg17
# Install popular extensions
sudo pig ext add pg_duckdb postgis timescaledb
Scenario 2: Air-gapped Environment
# On internet-connected machine:
sudo pig repo add -ru
sudo pig ext install pg17
sudo pig ext add pg_duckdb postgis
sudo pig repo create
sudo pig repo cache
# Transfer /tmp/pkg.tgz to air-gapped machine
# On air-gapped machine:
sudo pig repo boot
sudo pig repo add local
sudo pig ext install pg17
sudo pig ext add pg_duckdb postgis
Scenario 3: Using Regional Mirrors
# For users in China
sudo pig repo add all --region=china -u
# Check mirror URLs
pig repo info pgdg
9 - CMD: pig sty
Manage Pigsty installation with pig sty subcommand
The pig can also be used as a CLI tool for Pigsty — the battery-included free PostgreSQL RDS.
Which brings HA, PITR, Monitoring, IaC, and all the extensions to your PostgreSQL cluster.
| Command | Description | Notes |
|---|
sty init | Install Pigsty | |
sty boot | Install Ansible prerequisites | Requires sudo or root |
sty conf | Generate configuration | |
sty deploy | Run deployment playbook | |
Quick Start
pig sty init # Install Pigsty to ~/pigsty
pig sty boot # Install Ansible prerequisites
pig sty conf # Generate configuration
pig sty deploy # Run deployment playbook
sty init
Download and install Pigsty distribution to ~/pigsty directory.
pig sty init # Install latest Pigsty
pig sty init -v 3.5.0 # Install specific version
pig sty init -d /opt/pigsty # Install to specific directory
Options:
-v|--version: Specify Pigsty version-d|--dir: Specify installation directory-f|--force: Overwrite existing pigsty directory
sty boot
Install Ansible and its dependencies.
pig sty boot # Install Ansible
pig sty boot -y # Auto-confirm
pig sty boot -r china # Use China region mirrors
Options:
-r|--region: Upstream repo region (default, china, europe)-k|--keep: Keep existing upstream repo during bootstrap
sty conf
Generate Pigsty configuration file.
pig sty conf # Generate default configuration
pig sty conf -c rich # Use conf/rich.yml template (more extensions)
pig sty conf -c slim # Use conf/slim.yml template (minimal install)
pig sty conf -c supabase # Use conf/supabase.yml template (self-hosting)
pig sty conf -g # Generate with random passwords (recommended!)
pig sty conf -v 17 # Use PostgreSQL 17
pig sty conf -r china # Use China region mirrors
pig sty conf --ip 10.10.10.10 # Specify IP address
Options:
-c|--conf: Config template name-v|--version: PostgreSQL major version-r|--region: Upstream repo region--ip: Primary IP address-g|--generate: Generate random passwords-s|--skip: Skip IP address probing-o|--output: Output config file path
sty deploy
Run Pigsty deployment playbook.
pig sty deploy # Run full deployment
This command runs the deploy.yml playbook from your Pigsty installation.
Warning: This operation makes changes to your system. Use with caution!
Complete Workflow
Here’s the complete workflow to set up Pigsty:
# 1. Download and install Pigsty
pig sty init
# 2. Install Ansible and dependencies
cd ~/pigsty
pig sty boot
# 3. Generate configuration
pig sty conf -g # Generate with random passwords
# 4. Deploy Pigsty
pig sty deploy
For detailed setup instructions, check Get Started.
Configuration Templates
Available configuration templates (-c option):
| Template | Description |
|---|
meta | Default single-node meta configuration |
rich | Configuration with more extensions enabled |
slim | Minimal installation |
full | Full 4-node HA template |
supabase | Self-hosting Supabase template |
Example:
pig sty conf -c rich -g -v 17 -r china
This generates a configuration using the rich template with PostgreSQL 17, random passwords, and China region mirrors.
10 - CMD: pig build
Build PostgreSQL extensions from source with pig build subcommand
The pig build command is a powerful tool that simplifies the entire workflow of building PostgreSQL extensions from source. It provides a complete build infrastructure setup, dependency management, and compilation environment for both standard and custom PostgreSQL extensions across different operating systems.
Subcommands
| Command | Description | Notes |
|---|
build spec | Initialize building spec repo | |
build repo | Initialize required repos | Requires sudo or root |
build tool | Initialize build tools | Requires sudo or root |
build rust | Install Rust toolchain | Requires sudo or root |
build pgrx | Install and initialize pgrx | Requires sudo or root |
build pkg | Complete build pipeline | Requires sudo or root |
build get | Download source code tarball | |
build dep | Install extension build dependencies | Requires sudo or root |
build ext | Build extension package | Requires sudo or root |
Quick Start
# Setup build environment
pig build spec # Initialize build specs
pig build repo # Setup repositories
pig build tool # Install build tools
# Install Rust (for Rust extensions)
pig build rust -y # Install Rust
pig build pgrx # Install PGRX framework
# Build extensions
pig build pkg citus # Complete build pipeline
build spec
Initialize build specification files.
pig build spec # Create default spec files
pig build spec -f # Force overwrite existing files
build repo
Setup repositories required for building.
pig build repo # Setup repositories
Install build toolchain (gcc, make, cmake, etc.).
pig build tool # Install build tools
pig build tool -y # Auto-confirm
build rust
Install Rust toolchain (for building Rust extensions).
pig build rust # Install Rust
pig build rust -y # Auto-confirm
build pgrx
Install PGRX framework (for building PGRX extensions).
pig build pgrx # Install PGRX
pig build pgrx -v 17 # Install for PG 17
build pkg
Complete build pipeline: download source, install dependencies, build extension.
pig build pkg citus # Build citus
pig build pkg citus -v 17 # Build for PG 17
pig build pkg citus -y # Auto-confirm
build get
Download extension source code.
pig build get citus # Download citus source
build dep
Install extension build dependencies.
pig build dep citus # Install citus dependencies
pig build dep citus -y # Auto-confirm
build ext
Build extension package from source.
pig build ext citus # Build citus
pig build ext citus -v 17 # Build for PG 17
Build Infrastructure
Build Specifications
The build system uses specification files that define how each extension should be built. These specs include:
- Source code location and version
- Build dependencies
- Compilation flags
- PostgreSQL version compatibility
- Platform-specific build instructions
Directory Structure
~/ext/ # Default build spec directory
├── Makefile # Master build makefile
├── <extension>/ # Per-extension directory
│ ├── Makefile # Extension-specific makefile
│ ├── <extension>.spec # RPM spec file (EL)
│ └── debian/ # Debian packaging files
│ ├── control
│ ├── rules
│ └── ...
Build output locations:
- EL Systems:
~/rpmbuild/RPMS/<arch>/ - Debian Systems:
~/ (deb files)
Common Workflows
Workflow 1: Building Standard Extension
# 1. Setup build environment (once)
pig build spec
pig build repo
pig build tool
# 2. Build extension
pig build pkg pg_partman
# 3. Install built package
sudo rpm -ivh ~/rpmbuild/RPMS/x86_64/pg_partman*.rpm # EL
sudo dpkg -i ~/pg_partman*.deb # Debian
Workflow 2: Building Rust Extension
# 1. Setup Rust environment
pig build spec
pig build tool
pig build rust -y
pig build pgrx
# 2. Build Rust extension
pig build pkg pgmq
# 3. Install
sudo pig ext add pgmq
Workflow 3: Building Multiple Versions
# Build extension for multiple PostgreSQL versions
pig build pkg citus --pg 15,16,17
# Results in packages for each version:
# citus_15-*.rpm
# citus_16-*.rpm
# citus_17-*.rpm
Troubleshooting
# Install build tools
pig build tool
# For specific compiler
sudo dnf groupinstall "Development Tools" # EL
sudo apt install build-essential # Debian
Missing Dependencies
# Install extension dependencies
pig build dep <extension>
# Check error messages for specific packages
# Install manually if needed
sudo dnf install <package> # EL
sudo apt install <package> # Debian
# Install PostgreSQL development package
sudo pig ext install pg17-devel
# Or specify pg_config path
export PG_CONFIG=/usr/pgsql-17/bin/pg_config
Rust/PGRX Issues
# Reinstall Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Update PGRX
cargo install cargo-pgrx --force
# Reinitialize PGRX
cargo pgrx init