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/