标签: rpm
-
为什么 SOW 每个仓库只保留一棵包体树
这项决策起草于 2026-08-05 的 v0.2 发布前设计收敛阶段,并在 2026-08-08 随 SOW v0.2.0 正式交付,随后延续为 v0.3 与 v0.4 的布局契约。它记录的是架构选择,不是笼统的兼容性 PASS:协议闭包、普通软件包客户端、镜像工具、静态托管与对象存储始终属于彼此独立的证据层。 最终决策 每个 SOW Repository 只拥有一棵公共树: <repository>/ pool/ # 正典包体 dists/ <dist>/ <architecture>/ # …
这项决策起草于 2026-08-05 的 v0.2 发布前设计收敛阶段,并在 2026-08-08 随 SOW v0.2.0 正式交付,随后延续为 v0.3 与 v0.4 的布局契约。它记录的是架构选择,不是笼统的兼容性 PASS:协议闭包、普通软件包客户端、镜像工具、静态托管与对象存储始终属于彼此独立的证据层。 最终决策 每个 SOW Repository 只拥有一棵公共树: <repository>/ pool/ # 正典包体 dists/ <dist>/ <architecture>/ # …
-
sow export
SOW 提供一个导出子命令:sow export rpm-leaf。它创建外部、独立的 RPM 仓库, repodata 使用本地 pool/... href。 语法 sow export rpm-leaf DIST ARCH DIR [--hardlink] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 要求 DIST 已配置的规范 RPM Dist 名称 ARCH x86_64 或 aarch64 DIR 不存在或为空,且不与 …
SOW 提供一个导出子命令:sow export rpm-leaf。它创建外部、独立的 RPM 仓库, repodata 使用本地 pool/... href。 语法 sow export rpm-leaf DIST ARCH DIR [--hardlink] [-C|--workdir DIR] [-r|--repo NAME] [--json] 参数 要求 DIST 已配置的规范 RPM Dist 名称 ARCH x86_64 或 aarch64 DIR 不存在或为空,且不与 …
-
平台与集成
本页说明 SOW 提供哪些构建目标、工作区依赖什么存储语义,以及自动化集成具体覆盖哪些行为。 仓库生成在 SOW 二进制内部完成;部署后的最终门禁仍是实际软件包管理器。 Release 目标 操作系统 amd64 arm64 制品 Linux 是 是 归档、RPM、DEB macOS 是 是 归档 Windows 否 否 不支持 Release 二进制使用 CGO_ENABLED=0,不需要语言运行时。0.4.0 制品使用 Go 1.27.0 构建; 源码 Module 要求 Go 1.27.0 …
本页说明 SOW 提供哪些构建目标、工作区依赖什么存储语义,以及自动化集成具体覆盖哪些行为。 仓库生成在 SOW 二进制内部完成;部署后的最终门禁仍是实际软件包管理器。 Release 目标 操作系统 amd64 arm64 制品 Linux 是 是 归档、RPM、DEB macOS 是 是 归档 Windows 否 否 不支持 Release 二进制使用 CGO_ENABLED=0,不需要语言运行时。0.4.0 制品使用 Go 1.27.0 构建; 源码 Module 要求 Go 1.27.0 …
-
签名模型
客户端会对一个仓库提两个不同的问题,SOW 用两套彼此独立的机制分别回答。把它们混为一谈,是"我明明签了名,dnf 还是报错"这类问题最常见的来源 —— 所以本页先把两者拆开。 两条独立的信任链 元数据签名 RPM 包体签名 回答的问题 “这份索引真是你出的、没被改过吗?” “这个 .rpm 文件真是你出的吗?” 配置项 signing.rpm.metadata、signing.deb.metadata signing.rpm.packages 产出 …
客户端会对一个仓库提两个不同的问题,SOW 用两套彼此独立的机制分别回答。把它们混为一谈,是"我明明签了名,dnf 还是报错"这类问题最常见的来源 —— 所以本页先把两者拆开。 两条独立的信任链 元数据签名 RPM 包体签名 回答的问题 “这份索引真是你出的、没被改过吗?” “这个 .rpm 文件真是你出的吗?” 配置项 signing.rpm.metadata、signing.deb.metadata signing.rpm.packages 产出 …
-
演练构建 pigsty-infra 仓库
pgsty/infra-pkg 是 Pigsty Infra 软件包的上游构建源码。 本教程假设双架构 RPM 与 DEB 已经构建完成,只处理后半程:从一堆包开始,用 SOW 建成真正可消费、可维护的 infra 仓库。 1. 把包集中到 ~/repo 本教程固定使用 ~/repo,不再为每条路径定义环境变量。先把已有包复制进两个输入目录: mkdir -p ~/repo/packages/rpm ~/repo/packages/deb cp …
pgsty/infra-pkg 是 Pigsty Infra 软件包的上游构建源码。 本教程假设双架构 RPM 与 DEB 已经构建完成,只处理后半程:从一堆包开始,用 SOW 建成真正可消费、可维护的 infra 仓库。 1. 把包集中到 ~/repo 本教程固定使用 ~/repo,不再为每条路径定义环境变量。先把已有包复制进两个输入目录: mkdir -p ~/repo/packages/rpm ~/repo/packages/deb cp …
-
包池与元数据视图
不变式 在一个 Repository 内,每个 live Package Object 在 pool/ 下只有一条正典 payload 路径。 Dist 与架构 view 拥有元数据,不拥有包体 alias: <repo>/pool/... 正典包体 <repo>/dists/<rpm-dist>/<arch>/repodata/... 纯 RPM 元数据 <repo>/dists/<deb-dist>/main/binary-*/... 纯 APT 元数据 相同 digest 出现在另一个 …
不变式 在一个 Repository 内,每个 live Package Object 在 pool/ 下只有一条正典 payload 路径。 Dist 与架构 view 拥有元数据,不拥有包体 alias: <repo>/pool/... 正典包体 <repo>/dists/<rpm-dist>/<arch>/repodata/... 纯 RPM 元数据 <repo>/dists/<deb-dist>/main/binary-*/... 纯 APT 元数据 相同 digest 出现在另一个 …
-
包引用
sow rm、sow show、sow where 都接受一个 PACKAGE 参数。本页定义你能在那里写什么。 三条命令共用同一套文法,只有对 歧义名称 的处理不同。 这里的内容与 sow add 无关 —— add 接受的是文件系统路径,不是包引用。 五种形态 形态 例子 匹配 内容摘要 sha256:d06d7f23b9cf...b98b1229 恰好一个包对象 RPM 坐标 rpm:pev2-0:1.23.0-1.noarch 恰好一个 RPM DEB 坐标 …
sow rm、sow show、sow where 都接受一个 PACKAGE 参数。本页定义你能在那里写什么。 三条命令共用同一套文法,只有对 歧义名称 的处理不同。 这里的内容与 sow add 无关 —— add 接受的是文件系统路径,不是包引用。 五种形态 形态 例子 匹配 内容摘要 sha256:d06d7f23b9cf...b98b1229 恰好一个包对象 RPM 坐标 rpm:pev2-0:1.23.0-1.noarch 恰好一个 RPM DEB 坐标 …
-
快速上手
Plain 模式在一个目录内生成平面仓库。它不读取 sow.yml,不创建工作区,也不维护数据库。 准备目录 把 RPM 和/或 DEB 文件放在目录顶层。sow create 不递归扫描,也不移动或改名包文件。 mkdir -p /srv/repo cp /path/to/packages/*.rpm /path/to/packages/*.deb /srv/repo/ 如果某种格式不存在,请只复制你实际拥有的软件包。 生成元数据 sow create /srv/repo 混合格式输出形态如下 …
Plain 模式在一个目录内生成平面仓库。它不读取 sow.yml,不创建工作区,也不维护数据库。 准备目录 把 RPM 和/或 DEB 文件放在目录顶层。sow create 不递归扫描,也不移动或改名包文件。 mkdir -p /srv/repo cp /path/to/packages/*.rpm /path/to/packages/*.deb /srv/repo/ 如果某种格式不存在,请只复制你实际拥有的软件包。 生成元数据 sow create /srv/repo 混合格式输出形态如下 …
-
Plain 平面仓库
sow create 接手一个已经放着 .rpm / .deb 的目录,在包旁边生成平面仓库索引。Plain 模式没有工作区、配置文件、数据库、期望状态,也没有操作 journal。包目录就是权威事实来源,所有索引都是当前目录内容的可丢弃投影。 这个边界是刻意的:Managed 仓库保存状态并恢复事务;Plain 仓库失败了就便宜地重建。一次运行失败或被中断后,重新执行同一条命令,覆盖派生元数据即可。 契约 Plain 模式由四条规则定义: 包是权威事实。 默认 create 不修改包字节,只替 …
sow create 接手一个已经放着 .rpm / .deb 的目录,在包旁边生成平面仓库索引。Plain 模式没有工作区、配置文件、数据库、期望状态,也没有操作 journal。包目录就是权威事实来源,所有索引都是当前目录内容的可丢弃投影。 这个边界是刻意的:Managed 仓库保存状态并恢复事务;Plain 仓库失败了就便宜地重建。一次运行失败或被中断后,重新执行同一条命令,覆盖派生元数据即可。 契约 Plain 模式由四条规则定义: 包是权威事实。 默认 create 不修改包字节,只替 …
-
搭建 YUM 仓库
本教程从零创建一个 Managed RPM 仓库。你需要一个可写目录,以及一个或多个 RPM 文件。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new el9 --format rpm -r pigsty Dist 名称由你定义。SOW 不会根据 el9 推断操作系统版本。 2. 配置成员策略 编辑生成的 sow.yml。下面的配置按包名与架构各保留一个版本,并排除调试包: …
本教程从零创建一个 Managed RPM 仓库。你需要一个可写目录,以及一个或多个 RPM 文件。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new el9 --format rpm -r pigsty Dist 名称由你定义。SOW 不会根据 el9 推断操作系统版本。 2. 配置成员策略 编辑生成的 sow.yml。下面的配置按包名与架构各保留一个版本,并排除调试包: …
-
安装
SOW 只有一个可执行文件,不需要启用服务,也不依赖语言运行时。Release 构建目标是 Linux 与 macOS 的 amd64、arm64;Linux 另外提供 RPM 与 DEB 安装包。不支持 Windows。 在下载页选择匹配操作系统与架构的归档或 Linux 安装包。页面同时提供每个 已发布制品、对应源码 Tag 与 SHA256SUMS 的链接。 安装归档 下载一个归档与 SHA256SUMS,解压前只校验对应条目: # Linux amd64 grep …
SOW 只有一个可执行文件,不需要启用服务,也不依赖语言运行时。Release 构建目标是 Linux 与 macOS 的 amd64、arm64;Linux 另外提供 RPM 与 DEB 安装包。不支持 Windows。 在下载页选择匹配操作系统与架构的归档或 Linux 安装包。页面同时提供每个 已发布制品、对应源码 Tag 与 SHA256SUMS 的链接。 安装归档 下载一个归档与 SHA256SUMS,解压前只校验对应条目: # Linux amd64 grep …
-
sow create
sow create 把一个已经放着 .rpm / .deb 的目录变成平面仓库(flat repository):在包旁边写出索引 文件。它就是 Plain 平面模式的全部——没有 sow.yml、没有 SQLite、不做工作区发现。本页讲清单遍扫描 契约、--pigsty 完成门禁,以及 --sign-with 的 RPM 包签名。 语法 sow create [DIR] [-j N] [--pigsty] [-S KEY [--overwrite]] [-T DUR | -N] …
sow create 把一个已经放着 .rpm / .deb 的目录变成平面仓库(flat repository):在包旁边写出索引 文件。它就是 Plain 平面模式的全部——没有 sow.yml、没有 SQLite、不做工作区发现。本页讲清单遍扫描 契约、--pigsty 完成门禁,以及 --sign-with 的 RPM 包签名。 语法 sow create [DIR] [-j N] [--pigsty] [-S KEY [--overwrite]] [-T DUR | -N] …
-
下载 SOW
可以用 apt install sow 或 dnf install sow 从 Pigsty infra 软件源安装 SOW,也可以使用 固定版本的 RPM / DEB 安装包、面向 Linux 与 macOS(amd64 与 arm64)的 tar.gz 归档, 或者从某个 Tag 的源码自行构建。每条路径安装的都是同一个自包含可执行文件;每个已发布制品 都在 SHA256SUMS 中列出 SHA-256 摘要。安装完成后执行 sow version 与 sow help, 然后把 sow …
可以用 apt install sow 或 dnf install sow 从 Pigsty infra 软件源安装 SOW,也可以使用 固定版本的 RPM / DEB 安装包、面向 Linux 与 macOS(amd64 与 arm64)的 tar.gz 归档, 或者从某个 Tag 的源码自行构建。每条路径安装的都是同一个自包含可执行文件;每个已发布制品 都在 SHA256SUMS 中列出 SHA-256 摘要。安装完成后执行 sow version 与 sow help, 然后把 sow …