命令: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 权限 |
repo reload |
刷新仓库目录 |
快速入门
模块
在 pig 中,APT/YUM 仓库被组织为 模块 —— 服务于特定目的的一组仓库。
| 模块 | 说明 | 仓库列表 |
|---|---|---|
all |
安装 PG 所需的全部核心模块 | node + infra + pgsql |
pgsql |
PGDG + Pigsty PG 扩展 | pigsty-pgsql + pgdg |
pigsty |
Pigsty Infra + PGSQL 仓库 | pigsty-infra, pigsty-pgsql |
pgdg |
PGDG 官方仓库 | pgdg-common, pgdg14-18 |
node |
Linux 系统仓库 | base, updates, extras, epel, baseos, appstream… |
infra |
基础设施组件仓库 | pigsty-infra, nginx, docker-ce |
docker |
Docker 仓库 | docker-ce |
beta |
PostgreSQL 19 Beta 版本 | pgdg19-beta, pgdg-beta |
extra |
PGDG Non-Free 与三方扩展 | pgdg-extras, timescaledb, citus |
groonga |
PGroonga 仓库 | groonga |
mssql |
Wiltondb 仓库(已弃用) | babelfish |
percona |
Percona PG + PG_TDE | percona |
llvm |
LLVM 工具链仓库 | llvm |
kube |
Kubernetes 仓库 | kubernetes |
grafana |
Grafana 仓库 | grafana |
haproxy |
HAProxy 仓库 | haproxyd, haproxyu |
redis |
Redis 仓库 | redis |
mongo |
MongoDB 仓库 | mongo |
mysql |
MySQL 仓库 | mysql |
click |
ClickHouse 仓库 | clickhouse |
gitlab |
GitLab 仓库 | gitlab-ce, gitlab-ee |
除此之外,pig 还自带了一些其他数据库的 APT/DNF 仓库:redis, kubernetes, grafana, clickhouse, gitlab, haproxy, mongodb, mysql,在此不再展开。
通常来说,为了安装 PostgreSQL node (Linux 系统仓库) 和 pgsql(PGDG + Pigsty)是必选项,infra 仓库是可选项(包含了一些工具,IvorySQL Kernel 等)。您可以使用特殊的 all 模块,一次性添加所有需要的仓库到系统中,对绝大多数用户来说,这是合适的起点。
仓库定义
Pigsty 中可用仓库的完整定义位于 cli/repo/assets/repo.yml。
您可以创建 ~/.pig/repo.yml 文件,显式修改并覆盖 pig 的仓库定义。在编辑仓库定义文件时,您可以在 baseurl 处添加额外的区域镜像,例如指定中国,欧洲地区的镜像仓库 URL。当 pig 使用 --region 参数指定特定的区域时,pig 会优先查找对应区域的仓库 URL,如果不存在,则会 Fallback 到 default 的仓库 URL。
从 v1.7.0 起,repo add 或 repo set 指定 --mirror 时会明确选择内置的china 定义。PGDG 优先使用腾讯云,并保留定义中声明的 Pigsty 回退;其他模块使用各自维护中的中国区域 URL。pig 不再通过单独的运行时代理路由改写 PGDG URL。
普通 EL 仓库保留 DNF 原生模块过滤。只有显式声明 module_hotfixes=1 的定义
(主要是 Pigsty 与 PGDG 仓库)会覆盖模块流;渲染 EL7 YUM 配置时会移除该键。
repo list
pig repo list 将列出当前系统可用的所有仓库模块。
repo info
显示特定仓库或模块的详细信息,包括 URL、元数据和区域镜像,以及 .repo / .list 仓库文件内容。
repo status
显示系统上的当前仓库配置。
repo add
添加仓库配置文件到系统。需要 root/sudo 权限。
选项:
-r|--remove:添加新仓库前移除现有仓库-u|--update:添加仓库后运行包缓存更新--region <region>:使用区域镜像仓库(default/china/europe)-m|--mirror:明确选择内置的china仓库定义
| 平台 | 模块位置 |
|---|---|
| EL | /etc/yum.repos.d/<module>.repo |
| Debian | /etc/apt/sources.list.d/<module>.list |
repo set
等同于 repo add --remove --update。清空现有仓库并设置新仓库,然后更新缓存。
repo rm
移除仓库配置文件并备份它们。
| 平台 | 备份位置 |
|---|---|
| EL | /etc/yum.repos.d/backup/ |
| Debian | /etc/apt/sources.list.d/backup/ |
repo update
更新包管理器缓存以反映仓库更改。
| 平台 | 等效命令 |
|---|---|
| EL | dnf makecache |
| Debian | apt update |
repo create
为离线安装创建本地包仓库。
当前实现会优先使用 PATH 中的 sow。在 Linux 上选择 SOW 后,会对每个目标目录以 sudo 执行等价命令:
在 macOS 上必须安装 SOW,执行时不使用 sudo,默认目标为当前目录。Linux 上如果没有安装 sow,EL 会回退到 createrepo_c,Debian/Ubuntu 会回退到 dpkg-dev 提供的 dpkg-scanpackages;首选后端与平台回退均不可用时,pig repo create 才会失败。SOW 一旦被选中,其执行错误会直接返回,不会再用旧后端重试。10m 只限制等待 SOW 目录锁的时间,并不限制仓库索引本身的执行时间。
SOW 的 --pigsty 事务会:
- 只扫描顶层普通
.rpm与.deb文件,不递归,也不跟随符号链接。 - 按解析后的软件包事实,删除 32 位 x86 包(RPM 的
i386/i486/i586/i686、DEB 的i386),以及二进制包名恰为patroni、上游版本恰为3.0.4的包。 - 以原子方式生成对应的 RPM/DEB 元数据,最后写入
repo_complete;marker 按 basename 排序,记录剩余顶层软件包的 SHA-256。
非软件包文件与目录不会被改动;候选软件包无法解析或逻辑坐标冲突时,SOW 事务会失败关闭。旧版回退脚本的清理与元数据语义不同,并在 repo_complete 中写入软件包的 MD5 列表。任一后端退出后,PIG 都会要求 repo_complete 存在且为普通文件,但不会校验 marker 内容或其中哈希。若交付流程把 marker 当作放行条件,调用方应自行完成这些验证。
repo cache
创建仓库内容的压缩 tarball 用于离线分发。
选项:
-d, --dir:源目录(默认:/www/)-p, --path:输出路径(默认:/tmp/pkg.tgz)
repo boot
从离线包解压并设置本地仓库。
选项:
-p, --path:包路径(默认:/tmp/pkg.tgz)-d, --dir:目标目录(默认:/www/)
repo reload
从 GitHub 刷新仓库元数据到最新版本。
更新后的文件会放置于 ~/.pig/repo.yml 中。