仓库管理:repo
Module:
pig repo
命令是一个全面的软件包仓库管理工具。
它提供了管理、添加、删除、创建和操作操作系统软件仓库的功能。
它同时支持基于 RPM(EL)和基于 Debian 的系统。
概述
pig repo - 管理 Linux APT/YUM 仓库
pig repo list # 显示可用仓库列表 (info)
pig repo info [repo|module...] # 显示仓库详细信息 (info)
pig repo status # 显示当前仓库状态 (info)
pig repo add [repo|module...] # 添加仓库和模块 (root)
pig repo rm [repo|module...] # 删除仓库和模块 (root)
pig repo update # 更新仓库包缓存 (root)
pig repo create # 在当前系统创建仓库 (root)
pig repo boot # 从离线包启动仓库 (root)
pig repo cache # 将仓库缓存为离线包 (root)
用法:
pig repo [command]
别名:
repo, r
示例:
入门指南:https://pigsty.io/ext/pig/
pig repo add -ru # 添加所有仓库并更新缓存(简单粗暴但有效)
pig repo add pigsty -u # 温和版本,仅添加 pigsty 仓库并更新缓存
pig repo add node pgdg pigsty # 安装 postgres 包所需的基本仓库
pig repo add all # all = node + pgdg + pigsty
pig repo add all extra # extra 模块包含非免费和一些第三方扩展仓库
pig repo update # 更新仓库缓存
pig repo create # 更新本地仓库 /www/pigsty 元数据
pig repo boot # 将 /tmp/pkg.tgz 解压到 /www/pigsty
pig repo cache # 将 /www/pigsty 缓存到 /tmp/pkg.tgz
可用命令:
add 添加新仓库
boot 从离线包引导仓库
cache 从本地仓库创建离线包
create 创建本地 YUM/APT 仓库
info 获取仓库详细信息
list 打印可用仓库列表
rm 移除仓库
set 清除并覆盖仓库
status 显示当前仓库状态
update 更新仓库缓存
标志:
-h, --help 显示帮助信息
全局标志:
--debug 启用调试模式
-i, --inventory string 配置清单路径
--log-level string 日志级别:debug, info, warn, error, fatal, panic(默认 "info")
--log-path string 日志文件路径,默认输出到终端
示例
列出可用仓库并添加 PGDG 和 Pigsty 仓库,然后更新本地仓库缓存。
# 列出可用模块
pig repo list
# 添加 PGDG 和 Pigsty 仓库
pig repo add pgdg pigsty
# yum makecache 或 apt update
pig repo update
添加新仓库后,你需要更新仓库元数据缓存,你可以使用专门的 pig repo update
命令,或在 pig repo add
命令中使用 -u|--update
标志。
pig repo add pigsty -u # 添加 pigsty 仓库并更新仓库缓存
如果你想在添加新仓库前清除所有现有仓库,你可以使用额外的 -r|--remove
标志,或使用专门的 pig repo set
子命令替代 pig repo add
。
pig repo add all --remove # 删除所有现有仓库并添加 node、pgdg、pigsty 仓库并更新仓库缓存
pig repo add -r # 同上,如果缺少仓库/模块将使用默认的 `all` 别名来添加 node、pgdg、pigsty 仓库
pig repo set # 同上,set 是 `add --remove` 的快捷方式,被删除的仓库文件会备份到 `/etc/yum.repos.d/backup` 或 `/etc/apt/sources.list.d/backup`
设置 PostgreSQL 安装所需仓库最简单粗暴但可靠的方式是清除所有现有仓库并添加所有必需的仓库:
pig repo set -u # 清除所有现有仓库并添加所有必需的仓库并更新仓库缓存
模块
在 pigsty 中,所有仓库都被组织成模块,一个模块是仓库的集合。
模块名称可能在不同的操作系统发行版、主要版本、架构和地理区域中映射到不同的实际仓库。
Pigsty 会处理所有细节,你可以使用 pig repo list
列出所有仓库和模块。
repo_modules: # 可用模块:19
- all : pigsty-infra, pigsty-pgsql, pgdg, baseos, appstream, extras, powertools, crb, epel, base, updates, security, backports
- pigsty : pigsty-infra, pigsty-pgsql
- pgdg : pgdg
- node : baseos, appstream, extras, powertools, crb, epel, base, updates, security, backports
- infra : pigsty-infra, nginx
- pgsql : pigsty-pgsql, pgdg-common, pgdg-el8fix, pgdg-el9fix, pgdg13, pgdg14, pgdg15, pgdg16, pgdg17, pgdg
- extra : pgdg-extras, pgdg13-nonfree, pgdg14-nonfree, pgdg15-nonfree, pgdg16-nonfree, pgdg17-nonfree, timescaledb, citus
- mssql : wiltondb
- mysql : mysql
- docker : docker-ce
- kube : kubernetes
- grafana : grafana
- pgml : pgml
- groonga : groonga
- haproxy : haproxyd, haproxyu
- ivory : ivorysql
- local : pigsty-local
- mongo : mongo
- redis : redis
通常安装 PostgreSQL 和所有扩展需要以下 3 个模块:
pgdg
:官方 PostgreSQL 仓库,包含 PG 内核包、工具和 100+ 扩展。pigsty
:Pigsty 扩展仓库,包含 200+ 额外扩展和工具。node
:操作系统默认仓库,提供 PostgreSQL 所需的所有库和依赖。
有一个方便的伪模块别名 all
,包含了上述 3 个基本模块。
你可以使用 pig repo add all
添加所有这些模块,或使用更简单的缩写:pig repo add
。
repo list
列出当前系统可用的仓库模块和仓库。
print available repo list
Usage:
pig repo list [flags]
Aliases:
list, l, ls
Examples:
pig repo list # 列出当前系统可用的仓库
pig repo list all # 列出所有未过滤的仓库原始数据
Flags:
-h, --help help for list
可用仓库定义在 cli/repo/assets/repo.yml
中,
如果你想修改仓库列表,可以通过在 ~/.pig/repo.yml
添加自己的 repo.yml
文件来实现。
repo add
向系统添加仓库配置文件。
添加新仓库
用法:
pig repo add [flags]
别名:
add, a, append
示例:
pig repo add # = pig repo add all
pig repo add all # 添加 node,pgsql,infra 仓库(推荐)
pig repo add all -u # 添加上述仓库并更新仓库缓存(或:--update)
pig repo add all -r # 添加所有仓库,删除旧仓库(或:--remove)
pig repo add pigsty --update # 添加 pigsty 扩展仓库并更新仓库缓存
pig repo add pgdg --update # 添加 pgdg 官方仓库并更新仓库缓存
pig repo add pgsql node --remove # 添加操作系统 + postgres 仓库,删除旧仓库
pig repo add infra # 添加可观测性、grafana & prometheus 堆栈、pg 二进制工具
(注意系统仓库管理需要 sudo / root 权限)
可用仓库模块:
- all : pgsql + node + infra(推荐)
- pigsty : PostgreSQL 扩展仓库(默认)
- pgdg : PGDG 官方 PostgreSQL 仓库(官方)
- node : 操作系统官方仓库(el/debian/ubuntu)
- pgsql : pigsty + pgdg(所有可用的 pg 扩展)
# 使用 pig repo list 查看可用仓库和模块
标志:
-h, --help 显示帮助信息
--region string 区域代码(default|china)
-r, --remove 添加新仓库前删除现有仓库
-u, --update 运行 apt update 或 dnf makecache
此命令:
- 根据以下条件验证指定模块是否存在并转换为实际仓库
- 区域、发行版、操作系统主版本、架构
- 如果提供了
-r|--remove
标志,它会将现有仓库移动到备份文件夹:
- EL 系统:
/etc/yum.repos.d/backup
- Debian 系统:
/etc/apt/sources.list.d/backup
- 在系统的仓库目录中创建仓库文件
- EL 系统:
/etc/yum.repos.d/<module>.repo
- Debian 系统:
/etc/apt/sources.list.d/<module>.list
- 如果提供了
-u|--update
标志,它会运行apt update
或dnf makecache
来更新仓库缓存。
如果不是以 root
身份运行,需要 sudo 权限。
repo set
与 repo add <...> --remove
相同,在添加新仓库前删除现有仓库。
清除并覆盖仓库
用法:
pig repo set [flags]
别名:
set, overwrite
示例:
pig repo set all # 将仓库设置为 node,pgsql,infra(推荐)
pig repo set all -u # 将仓库设置为上述仓库并更新仓库缓存(或 --update)
pig repo set pigsty --update # 将仓库设置为 pigsty 扩展仓库并更新仓库缓存
pig repo set pgdg --update # 将仓库设置为 pgdg 官方仓库并更新仓库缓存
pig repo set infra # 将仓库设置为可观测性、grafana & prometheus 堆栈、pg 二进制工具
(注意系统仓库管理需要 sudo/root 权限)
标志:
-h, --help 显示帮助信息
--region string 区域代码
-u, --update 运行 apt update 或 dnf makecache
如果不是以 root
身份运行,需要 sudo 权限。
repo update
更新仓库缓存,相当于 apt update
或 yum makecache
。
更新仓库缓存
用法:
pig repo update [flags]
别名:
update, u
示例:
pig repo update # yum makecache 或 apt update
标志:
-h, --help 显示帮助信息
如果不是以 root
身份运行,需要 sudo 权限。
repo rm
从系统中删除仓库文件。
删除仓库
用法:
pig repo rm [flags]
别名:
rm, remove
示例:
pig repo rm # 删除(备份)所有现有仓库到备份目录
pig repo rm all --update # 删除模块 'all' 并更新仓库缓存
pig repo rm node pigsty -u # 删除模块 'node' 和 'pigsty' 并更新仓库缓存
标志:
-h, --help 显示帮助信息
-u, --update 运行 apt update 或 dnf makecache
它会从系统中删除仓库文件,如果提供了 -u|--update
标志,它会在删除仓库文件后运行 apt update
或 dnf makecache
来更新仓库缓存。
在删除文件之前,该命令会创建现有仓库配置的备份。
如果不是以 root
身份运行,通常需要 sudo 权限。
repo status
打印系统仓库目录并列出系统包管理器可用的仓库。
显示当前仓库状态
用法:
pig repo status [flags]
别名:
status, s, st
标志:
-h, --help 显示帮助信息
repo info
提供特定仓库或模块的详细信息。
获取仓库详细信息
用法:
pig repo info [flags]
别名:
info, i
标志:
-h, --help 显示帮助信息
示例:
#-------------------------------------------------
名称 : pgdg
摘要 : PGDG
可用性 : 是(debian d12 amd64)
模块 : pgsql
系统架构 : [x86_64, aarch64]
系统发行版 : deb [11,12,20,22,24]
元数据 : trusted=yes
基础 URL : http://apt.postgresql.org/pub/repos/apt/ ${distro_codename}-pgdg main
china : https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ ${distro_codename}-pgdg main
# 默认仓库内容
# pgdg PGDG
deb [trusted=yes] http://apt.postgresql.org/pub/repos/apt/ bookworm-pgdg main
# 中国镜像仓库内容
# pgdg PGDG
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ bookworm-pgdg main
它会打印给定仓库名称或模块名称的仓库信息。并且支持区域性镜像。
repo create
在指定目录创建本地 YUM/APT 仓库
创建本地 YUM/APT 仓库
用法:
pig repo create [path...]
别名:
create, cr
示例:
pig repo create # 默认在 /www/pigsty 创建仓库
pig repo create /www/mssql /www/b # 在多个位置创建仓库
(注意系统仓库管理需要 sudo/root 权限)
默认目录: /www/pigsty
此命令:
- 如果目录不存在则创建目录结构
- 使用仓库工具创建本地仓库(确保系统已安装这些工具)
- EL 系统:
createrepo_c
- Debian 系统:
dpkg-dev
如果不是以 root
身份运行,需要该目录的读/写权限。
repo cache
为离线使用创建仓库内容的压缩 tarball。
pig repo cache [directory_path] [package_path] [repo1,repo2,...]
参数:
directory_path
:包含仓库的源目录(默认:/www
)package_path
:输出 tarball 路径(默认:当前目录下的pigsty-pkg-<os>-<arch>.tgz
)repos
:要包含的仓库子目录的逗号分隔列表(默认:全部)
示例:
pig repo cache /www /tmp/pkg.tgz pigsty
pig repo cache /www /tmp/pkg.tgz pigsty mssql ivory
你可以在已创建的本地仓库上创建 tarball,并使用它从离线包引导新系统。
repo cache
从本地仓库创建离线包
从本地仓库创建离线包
用法:
pig repo cache [flags]
别名:
cache, c
示例:
pig repo cache # 从 /www/pigsty 创建 /tmp/pkg.tgz 离线包
pig repo cache -f # 强制覆盖现有包
pig repo cache -d /srv # 将默认内容目录 /www 覆盖为 /srv
pig repo cache pigsty mssql # 使用 pigsty 和 mssql 仓库创建 tarball
pig repo c -f # 制作离线包的最简用法
(注意系统仓库管理需要 sudo/root 权限)
标志:
-d, --dir string 源仓库路径(默认 "/www/")
-h, --help 显示帮助信息
-p, --path string 离线包路径(默认 "/tmp/pkg.tgz")
repo boot
从离线包引导本地仓库。
从离线包引导仓库
用法:
pig repo boot [flags]
别名:
boot, b, bt
示例:
pig repo boot # 从 /tmp/pkg.tgz 引导仓库到 /www
pig repo boot -p /tmp/pkg.tgz # 从给定的包路径引导仓库
pig repo boot -d /srv # 引导仓库到另一个目录 /srv
标志:
-d, --dir string 目标仓库路径(默认 "/www/")
-h, --help 显示帮助信息
-p, --path string 离线包路径(默认 "/tmp/pkg.tgz")
参数:
offline_package
:由pig repo cache
创建的 tarball 路径target_directory
:解压仓库的目标目录(默认:/www
)
示例:
pig repo boot /tmp/pkg.tgz /www
此命令:
- 将 tarball 解压到目标目录
- 设置本地仓库配置
- 更新仓库元数据