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

返回本页常规视图.

扩展仓库

如何在 EL/Debian/Ubuntu 及其兼容操作系统上,使用 Pigsty 提供的插件仓库?

如果您使用 Pigsty 来部署 PostgreSQL 并安装扩展,那么您 并不需要 关心软件仓库的问题,Pigsty 会自动为您配置好一切。 但如果您想要独立使用 Pigsty 扩展仓库(例如为您现有的 PG 部署安装 400+ 额外扩展),那么本节内容将对您有所帮助。

PostgreSQL 全球开发组(PGDG)提供了的 PGDG YUM/APT 软件仓库,可以视作 PostgreSQL 的“官方”仓库仓库。 而 Pigsty 提供了一个补充软件仓库(类似于 EPEL 之于 RHEL),针对 PostgreSQL 扩展与生态工具,提供了额外的 RPM / DEB 包,并在构建规范上与 PGDG 仓库 保持一致

目前 Pigsty 扩展仓库支持 x86_64/aarch64 架构,包括两个子仓库:pigsty-infrapigsty-pgsql, 前者包含了 OS 大版本无关的通用基础设施组件(例如 EL 7/8/9 都能用的 go 程序 vip-manager), 后者包含了 OS 大版本相关的 PostgreSQL 扩展,具体的支持范围为:EL 8/9, Debian 12,Ubuntu 22.04/24.04,总计 10 个发行版大版本架构组合。

在支持的操作系统上,我们提供 PostgreSQL 包管理器 pig 命令行工具,提供了 Pigsty 仓库/扩展管理功能的子集,可以帮助您管理软件仓库,并安装/卸载/更新/查询扩展。

当然 Pigsty 扩展仓库也同样支持传统/标准的 YUM / APT 仓库使用方式,使用 yum/dnf/apt 进行手工管理。




1 - YUM仓库

如何在 RHEL/Rocky 及其兼容操作系统上,使用 Pigsty 提供的 PostgreSQL 插件 YUM/DNF 仓库?

YUM仓库

对于 EL 8/9 及兼容系统,使用以下命令依次添加 Pigsty 仓库的 GPG 公钥,写入仓库定义,并更新缓存:

# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.cc/key | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null

# 向 /etc/yum.repos.d 目录中添加 Pigsty Repo 定义文件,包括两个仓库
sudo tee /etc/yum.repos.d/pigsty-cc.repo > /dev/null <<-'EOF'
[pigsty-infra]
name=Pigsty Infra for $basearch
baseurl=https://repo.pigsty.cc/yum/infra/$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1

[pigsty-pgsql]
name=Pigsty PGSQL For el$releasever.$basearch
baseurl=https://repo.pigsty.cc/yum/pgsql/el$releasever.$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1
EOF

# 刷新 YUM/DNF 仓库缓存
sudo yum makecache;
# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.io/key | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null

# 向 /etc/yum.repos.d 目录中添加 Pigsty Repo 定义文件,包括两个仓库
sudo tee /etc/yum.repos.d/pigsty-io.repo > /dev/null <<-'EOF'
[pigsty-infra]
name=Pigsty Infra for $basearch
baseurl=https://repo.pigsty.io/yum/infra/$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1

[pigsty-pgsql]
name=Pigsty PGSQL For el$releasever.$basearch
baseurl=https://repo.pigsty.io/yum/pgsql/el$releasever.$basearch
skip_if_unavailable = 1
enabled = 1
priority = 1
gpgcheck = 1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty
module_hotfixes=1
EOF

# 刷新 YUM/DNF 仓库缓存
sudo yum makecache;

仓库内容

pigsty-pgsql 仓库包含以下内容:

  • 208 个 PostgreSQL 扩展对应的 RPM 包(由 Pigsty 维护,未收录于 PGDG YUM 仓库中)
  • 215 个 PostgreSQL 扩展对应的 DEB 包(由 Pigsty 维护,未收录于 PGDG APT 仓库中)
  • haproxy 3.1
  • redis 7.2

pigsty-infra 仓库包含以下内容:




2 - APT仓库

如何在 Debian/Ubuntu 及其兼容操作系统上,使用 Pigsty 提供的 PostgreSQL 插件 APT 仓库?

对于 Debian/Ubuntu 及其兼容系统,使用以下命令依次添加 Pigsty 仓库的 GPG 公钥,写入仓库定义,并更新缓存:

# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.cc/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg

# 获取 Debian 发行版代号,distro_codename=jammy, focal, bullseye, bookworm,并将对应上游仓库地址写入 APT List 文件
distro_codename=$(lsb_release -cs)
sudo tee /etc/apt/sources.list.d/pigsty-io.list > /dev/null <<EOF
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.cc/apt/infra generic main
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.cc/apt/pgsql/${distro_codename} ${distro_codename} main
EOF

# 刷新 APT 仓库缓存
sudo apt update
# 将 pigsty 的 gpg 公钥添加到你的系统钥匙链中,从而验证软件包签名
curl -fsSL https://repo.pigsty.io/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg

# 获取 Debian 发行版代号,distro_codename=jammy, focal, bullseye, bookworm,并将对应上游仓库地址写入 APT List 文件
distro_codename=$(lsb_release -cs)
sudo tee /etc/apt/sources.list.d/pigsty-io.list > /dev/null <<EOF
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.io/apt/infra generic main
deb [signed-by=/etc/apt/keyrings/pigsty.gpg] https://repo.pigsty.io/apt/pgsql ${distro_codename} main
EOF

# 刷新 APT 仓库缓存
sudo apt update

仓库内容

pigsty-pgsql 仓库包含以下内容:

  • 208 个 PostgreSQL 扩展对应的 RPM 包(由 Pigsty 维护,未收录于 PGDG YUM 仓库中)
  • 215 个 PostgreSQL 扩展对应的 DEB 包(由 Pigsty 维护,未收录于 PGDG APT 仓库中)
  • haproxy 3.1
  • redis 7.2

pigsty-infra 仓库包含以下内容:




3 - PIG命令

如何使用 pig 命令行工具来管理 PostgreSQL / Pigsty 扩展仓库?

您可以使用 Pigsty 提供的 pig 命令行工具,管理 Linux 操作系统上的软件仓库。使用以下命令 安装 pig 命令行工具:

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

使用以下命令添加软件仓库,Pig 命令行工具会自动检测您的网络条件(墙内/墙外),并选择速度最快的镜像:

pig repo add pigsty   # 添加 PIGSTY 仓库
pig repo add pgdg     # 添加 PGDG 仓库
pig repo add pgsql    # 添加 PGDG + PIGSTY 镜像源
pig repo add node     # 添加操作系统默认软件仓库
pig repo add all      # 添加 PIGSTY + PGDG + NODE 仓库

所有Repo 文件默认会写入 /etc/yum.repos.d/(EL) 与 /etc/apt/sources.list.d/(Debian/Ubuntu) 目录下。

您可以使用以下命令,向当前系统添加 PIGSTY + PGDG + NODE 仓库并更新软件仓库缓存:

pig repo add all -u  # 添加 NODE + PGSQL 软件仓库并更新缓存

如果您想要清除并覆盖当前系统上的所有仓库,并重新添加 PIGSTY + PGDG + NODE 仓库,您可以使用以下命令:

pig repo add all -ru  # remove + update
pig repo set          # 上面命令的缩写

移除的现有 repo 文件会被自动备份到上述目录下的 backup 目录中。

我们建议使用这种方式来管理软件仓库,但如果您不想使用 Pigsty 提供的命令行工具,您也可以 手工添加 YUM/APT软件仓库。




4 - 签名密钥

在 YUM/APT 仓库中签名 RPM/DEB 软件包使用的 GPG 密钥

Pigsty 补充仓库中的所有 RPM/DEB 包都使用指纹为 (B9BD8B20) 的 GPG 密钥进行签名。

完整摘要为:9592A7BC7A682E7333376E09E7935D8DB9BD8B20 Ruohang Feng (Pigsty) rh@vonng.com

pub   rsa4096 2024-07-16 [SC]
      9592A7BC7A682E7333376E09E7935D8DB9BD8B20
uid           [ultimate] Ruohang Feng (Pigsty) <rh@vonng.com>
sub   rsa4096 2024-07-16 [E]

导入公钥

在 RHEL/Rocky 兼容 Linux 发行版中,您可以使用以下命令导入此密钥:

curl -fsSL https://repo.pigsty.cc/key | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null
curl -fsSL https://repo.pigsty.io/key | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-pigsty >/dev/null

在 Debian/Ubuntu 兼容 Linux 发行版中,您可以使用以下命令导入此密钥:

curl -fsSL https://repo.pigsty.cc/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg
curl -fsSL https://repo.pigsty.io/key | sudo gpg --dearmor -o /etc/apt/keyrings/pigsty.gpg

密钥内容

您可以在此处下载此公钥:

此密钥对应的公钥内容为:

-----BEGIN PGP PUBLIC KEY BLOCK-----

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
/c7w
=4rRi
-----END PGP PUBLIC KEY BLOCK-----