managed
27 篇-
SOW v0.4.0
SOW 0.4.0 改进了 Managed 仓库的校验与恢复。check 只对每个物理软件包计算一次内容哈希;RPM 验签分别判断各组密钥的信任结果;发布目标可通过有记录的重绑定操作修改公共 URL 或缓存时间。 Plain 行为与公共 pool/、dists/ 布局保持不变。本文记录 0.4.0;升级到当前版本请按安装指南操作。 从 0.3 升级到 0.4 停止工作区写入,备份完整工作区并保留硬链接。安装 0.4.0 后,先迁移每个已配置的 Repository,再继续维护: set -euo …
SOW 0.4.0 改进了 Managed 仓库的校验与恢复。check 只对每个物理软件包计算一次内容哈希;RPM 验签分别判断各组密钥的信任结果;发布目标可通过有记录的重绑定操作修改公共 URL 或缓存时间。 Plain 行为与公共 pool/、dists/ 布局保持不变。本文记录 0.4.0;升级到当前版本请按安装指南操作。 从 0.3 升级到 0.4 停止工作区写入,备份完整工作区并保留硬链接。安装 0.4.0 后,先迁移每个已配置的 Repository,再继续维护: set -euo …
-
SOW v0.3.0
SOW 0.3.0 减少了重复包读取与数据库查询。Plain 生成只遍历一次包内容;Managed 构建缓存已解析的包数据,并批量提交新包池文件。本版还移除了已退役的运行时与发布代码。 Plain:每个软件包只读一次 默认不签名的 sow create 流程对每个 RPM 或 DEB 只做一次哈希与解析,--jobs 控制并行任务数。SOW 根据解析结果生成元数据,写入索引前再次检查软件包集合与文件属性是否变化。 Plain 构建中断后,从软件包目录重新运行即可。0.3 移除了 Plain 的操 …
SOW 0.3.0 减少了重复包读取与数据库查询。Plain 生成只遍历一次包内容;Managed 构建缓存已解析的包数据,并批量提交新包池文件。本版还移除了已退役的运行时与发布代码。 Plain:每个软件包只读一次 默认不签名的 sow create 流程对每个 RPM 或 DEB 只做一次哈希与解析,--jobs 控制并行任务数。SOW 根据解析结果生成元数据,写入索引前再次检查软件包集合与文件属性是否变化。 Plain 构建中断后,从软件包目录重新运行即可。0.3 移除了 Plain 的操 …
-
设计原则
SOW 分别管理包存储、仓库构建和发布。以下原则说明各类状态由谁保存,以及操作如何使用这些状态。 每类记录由一个对象管理 记录 管理范围 包体与包身份 Repository Desired 成员关系与 Built 状态 Repository Generation 与变更集 Repository 目标绑定与修订记录 Repository 与发布目标 发布尝试与检查点 Repository 与目标前缀 远端清单与删除记录 Repository 与目标前缀 每个 Repository 分别保存自己的包 …
SOW 分别管理包存储、仓库构建和发布。以下原则说明各类状态由谁保存,以及操作如何使用这些状态。 每类记录由一个对象管理 记录 管理范围 包体与包身份 Repository Desired 成员关系与 Built 状态 Repository Generation 与变更集 Repository 目标绑定与修订记录 Repository 与发布目标 发布尝试与检查点 Repository 与目标前缀 远端清单与删除记录 Repository 与目标前缀 每个 Repository 分别保存自己的包 …
-
SOW v0.2.0
SOW 0.2.0 引入了面向 RPM 与 DEB 仓库的 Plain 和 Managed 工作流。它以单个 Go 可执行文件,在 Linux 或 macOS 上构建静态软件包仓库。 本文记录 0.2.0 发布时的功能。当前安装与操作方法见现行文档。 构建平面仓库 Plain 模式索引目录顶层的 RPM 与 DEB 文件: sow create /srv/repo RPM 生成 repodata/,DEB 生成 Packages 与 Packages.gz,混合目录同时生成两种索引。Plain …
SOW 0.2.0 引入了面向 RPM 与 DEB 仓库的 Plain 和 Managed 工作流。它以单个 Go 可执行文件,在 Linux 或 macOS 上构建静态软件包仓库。 本文记录 0.2.0 发布时的功能。当前安装与操作方法见现行文档。 构建平面仓库 Plain 模式索引目录顶层的 RPM 与 DEB 文件: sow create /srv/repo RPM 生成 repodata/,DEB 生成 Packages 与 Packages.gz,混合目录同时生成两种索引。Plain …
-
v0.2 重置:用 Plain 与 Managed 取代万能控制面
2026-07-31,v0.1 源码基线封存后,SOW 开始了一次产品重置。 目标是构建一个小型仓库引擎,替代 Pigsty 日常软件包构建工作流。 重置保留了已有的完整性与恢复经验,同时移除了大部分控制面。 最终形成的分工沿用至今:Plain 重建调用者拥有的目录,Managed 管理仓库及其历史。 开发设计最初在 RPM 视图内使用 C2 硬链接,随后在 8 月 8 日发布 v0.2.0 前被替换。 部分归档计划曾把 C2 构建称为“v0.2.0”,但正式标签已经采用单一包池与纯元数据视图。 …
2026-07-31,v0.1 源码基线封存后,SOW 开始了一次产品重置。 目标是构建一个小型仓库引擎,替代 Pigsty 日常软件包构建工作流。 重置保留了已有的完整性与恢复经验,同时移除了大部分控制面。 最终形成的分工沿用至今:Plain 重建调用者拥有的目录,Managed 管理仓库及其历史。 开发设计最初在 RPM 视图内使用 C2 硬链接,随后在 8 月 8 日发布 v0.2.0 前被替换。 部分归档计划曾把 C2 构建称为“v0.2.0”,但正式标签已经采用单一包池与纯元数据视图。 …
-
sow build
sow build 更新本地索引,使其与期望成员和当前配置一致。在 add --skip、rm --skip 或修改策略后运行此命令。开始新构建前,它会恢复未完成的本地仓库操作。 语法 sow build [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -j, --jobs N 并行工作线程数,不得小 …
sow build 更新本地索引,使其与期望成员和当前配置一致。在 add --skip、rm --skip 或修改策略后运行此命令。开始新构建前,它会恢复未完成的本地仓库操作。 语法 sow build [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] [--json] 参数 含义 默认值 -j, --jobs N 并行工作线程数,不得小 …
-
sow status
sow status 显示仓库是否需要构建、待构建数据量及写锁占用情况。它读取已记录状态,不扫描包文件内容。需要验证文件内容时,使用 sow check。 语法 sow status [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 只查看指定 …
sow status 显示仓库是否需要构建、待构建数据量及写锁占用情况。它读取已记录状态,不扫描包文件内容。需要验证文件内容时,使用 sow check。 语法 sow status [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 只查看指定 …
-
sow where
sow where 在工作区中查找一个软件包的期望成员位置。默认搜索全部仓库;使用 -r 或 -d 限定范围。 语法 sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 将搜索限制到一个仓库 全部仓库 -d, --dist NAME 将搜索限制到指定 Dist;可重复 全 …
sow where 在工作区中查找一个软件包的期望成员位置。默认搜索全部仓库;使用 -r 或 -d 限定范围。 语法 sow where PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 将搜索限制到一个仓库 全部仓库 -d, --dist NAME 将搜索限制到指定 Dist;可重复 全 …
-
sow show
sow show 查看所选仓库中的一个软件包。文本输出包含包信息、存储位置与成员关系。需要完整的软件包记录时,加上 --json。 语法 sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 将候选项收窄到指定 Dist;可 …
sow show 查看所选仓库中的一个软件包。文本输出包含包信息、存储位置与成员关系。需要完整的软件包记录时,加上 --json。 语法 sow show PACKAGE [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 将候选项收窄到指定 Dist;可 …
-
sow ls
sow ls 列出指定 Dist 的期望成员。每行还显示该包在整个仓库中的期望成员位置与已构建位置。可从输出中获取供 show 或 rm 使用的包引用。 语法 sow ls [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 选择 Dist;可重复 选择规 …
sow ls 列出指定 Dist 的期望成员。每行还显示该包在整个仓库中的期望成员位置与已构建位置。可从输出中获取供 show 或 rm 使用的包引用。 语法 sow ls [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [--json] 参数 含义 默认值 -C, --workdir DIR 工作区发现起点 当前目录 -r, --repo NAME 选择仓库 选择规则 -d, --dist NAME 选择 Dist;可重复 选择规 …
-
sow rm
sow rm 从指定 Dist 移除软件包,并重建本地索引。使用 --check 预览删除结果,使用 --skip 延后构建。包文件仍保留在 pool/ 中,由 sow gc 回收不再需要的文件。 语法 sow rm PACKAGE... [-c|--check] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] …
sow rm 从指定 Dist 移除软件包,并重建本地索引。使用 --check 预览删除结果,使用 --skip 延后构建。包文件仍保留在 pool/ 中,由 sow gc 回收不再需要的文件。 语法 sow rm PACKAGE... [-c|--check] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | -N|--no-wait] …
-
sow add
sow add 将软件包导入指定 Dist,并构建本地索引。它从包头读取格式与架构,再应用各 Dist 的成员策略。需要分批导入后统一构建时,使用 --skip。需要更新远程目标时,在构建后运行 sow publish。 语法 sow add PATH... [-R|--recursive] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | …
sow add 将软件包导入指定 Dist,并构建本地索引。它从包头读取格式与架构,再应用各 Dist 的成员策略。需要分批导入后统一构建时,使用 --skip。需要更新远程目标时,在构建后运行 sow publish。 语法 sow add PATH... [-R|--recursive] [--skip] [-j|--jobs N] [-C|--workdir DIR] [-r|--repo NAME] [-d|--dist NAME]... [-T|--timeout DUR | …
-
演练构建 pigsty-infra 仓库
pgsty/infra-pkg 是 Pigsty Infra 软件包的上游构建源码。 本教程使用已构建的 x86-64 与 ARM64 RPM、DEB,创建包含滚动频道、稳定发布与月度快照的 infra 仓库。先安装 SOW、jq 与 Docker。安装示例使用 pg-exporter;请包含该包,以及客户端镜像中尚未安装的依赖。 1. 把包集中到 ~/repo 为本工作区使用新的 ~/repo 目录。从 infra-pkg 源码目录复制软件包到两个输入目录: mkdir -p …
pgsty/infra-pkg 是 Pigsty Infra 软件包的上游构建源码。 本教程使用已构建的 x86-64 与 ARM64 RPM、DEB,创建包含滚动频道、稳定发布与月度快照的 infra 仓库。先安装 SOW、jq 与 Docker。安装示例使用 pg-exporter;请包含该包,以及客户端镜像中尚未安装的依赖。 1. 把包集中到 ~/repo 为本工作区使用新的 ~/repo 目录。从 infra-pkg 源码目录复制软件包到两个输入目录: mkdir -p …
-
成员策略
用 Dist 策略排除不需要的包,并限制索引中的版本数量。在 sow.yml 中配置 exclude 和 limit: dists: el9: format: rpm limit: 2 exclude: - kind: [debuginfo, debugsource, llvmjit] SOW 先执行 exclude,再执行 limit。add、rm 和 build 都会对所选 Dist 的完整候选 成员集合应用策略。编辑策略后,先运行 sow config check,再运行 sow …
用 Dist 策略排除不需要的包,并限制索引中的版本数量。在 sow.yml 中配置 exclude 和 limit: dists: el9: format: rpm limit: 2 exclude: - kind: [debuginfo, debugsource, llvmjit] SOW 先执行 exclude,再执行 limit。add、rm 和 build 都会对所选 Dist 的完整候选 成员集合应用策略。编辑策略后,先运行 sow config check,再运行 sow …
-
sow dist
sow dist 管理客户端使用的发行版集合。每个 Dist 只包含 RPM 或 DEB 中的一种格式。同一仓库内的 Dist 共用 pool/,在 dists/ 下各有独立索引。 语法 sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME --format rpm|deb [-C DIR] [-r NAME] [-T DUR | -N] [--json] sow dist show NAME [-C DIR] [-r NAME] …
sow dist 管理客户端使用的发行版集合。每个 Dist 只包含 RPM 或 DEB 中的一种格式。同一仓库内的 Dist 共用 pool/,在 dists/ 下各有独立索引。 语法 sow dist ls [-C DIR] [-r NAME] [--json] sow dist new NAME --format rpm|deb [-C DIR] [-r NAME] [-T DUR | -N] [--json] sow dist show NAME [-C DIR] [-r NAME] …
-
核心概念
选择模式 需求 Plain Managed 为软件包目录生成索引 sow create DIR 用 sow add 导入软件包 保存配置与成员关系 目录内容就是状态 sow.yml 与私有 SQLite 数据库 组织软件包 一个平面目录,可同时包含 RPM 与 DEB 具名 Dist,每个 Dist 一种格式 生成架构视图 不支持 支持 过滤软件包、限制版本数 --pigsty 提供 Pigsty 约定 每个 Dist 单独配置 签名 RPM 软件包 支持 支持 签名仓库元数据 在 SOW 外 …
选择模式 需求 Plain Managed 为软件包目录生成索引 sow create DIR 用 sow add 导入软件包 保存配置与成员关系 目录内容就是状态 sow.yml 与私有 SQLite 数据库 组织软件包 一个平面目录,可同时包含 RPM 与 DEB 具名 Dist,每个 Dist 一种格式 生成架构视图 不支持 支持 过滤软件包、限制版本数 --pigsty 提供 Pigsty 约定 每个 Dist 单独配置 签名 RPM 软件包 支持 支持 签名仓库元数据 在 SOW 外 …
-
服务与发布仓库
SOW 生成静态仓库文件。本教程把 Managed 仓库发布到独立目录,再用 Nginx 提供服务。先完成第一个工作区。 源目录是 /srv/sow/local,公开副本将位于 /srv/repo-public/local。 两者都包含完整的 pool/ 与 dists/ 目录树。工作区配置与私有状态保留在服务目录之外。 1. 构建并检查 cd /srv/sow sow build -r local sow check -r local check 成功后继续。 2. 添加 filesystem …
SOW 生成静态仓库文件。本教程把 Managed 仓库发布到独立目录,再用 Nginx 提供服务。先完成第一个工作区。 源目录是 /srv/sow/local,公开副本将位于 /srv/repo-public/local。 两者都包含完整的 pool/ 与 dists/ 目录树。工作区配置与私有状态保留在服务目录之外。 1. 构建并检查 cd /srv/sow sow build -r local sow check -r local check 成功后继续。 2. 添加 filesystem …
-
sow repo
sow repo 用于创建、列出、查看、升级和删除仓库。每个仓库在 pool/ 中保存包文件,在 dists/ 中保存索引。同一仓库的 Dist 共用包文件。 语法 sow repo ls [-C DIR] [--json] sow repo new NAME [-C DIR] [-T DUR | -N] [--json] sow repo show [NAME] [-C DIR] [-r NAME] [--json] sow repo migrate [NAME] [--abort] [-j …
sow repo 用于创建、列出、查看、升级和删除仓库。每个仓库在 pool/ 中保存包文件,在 dists/ 中保存索引。同一仓库的 Dist 共用包文件。 语法 sow repo ls [-C DIR] [--json] sow repo new NAME [-C DIR] [-T DUR | -N] [--json] sow repo show [NAME] [-C DIR] [-r NAME] [--json] sow repo migrate [NAME] [--abort] [-j …
-
功能
SOW 用两种模式创建仓库索引。可以随时重建的包目录使用 Plain; 需要持续更新、策略、签名和发布的仓库使用 Managed。 功能对照 功能 Plain Managed RPM 与 DEB 索引 一个目录,可包含任一种或两种格式 一个仓库,分别使用不同 Dist 持久化成员与构建快照 — 支持 分架构视图 — 支持,包含架构无关包 包排除 --pigsty 使用固定清理规则 按 Dist 配置 版本数量限制 — 按 Dist 配置 元数据签名 — RPM 和 DEB RPM 包签名 …
SOW 用两种模式创建仓库索引。可以随时重建的包目录使用 Plain; 需要持续更新、策略、签名和发布的仓库使用 Managed。 功能对照 功能 Plain Managed RPM 与 DEB 索引 一个目录,可包含任一种或两种格式 一个仓库,分别使用不同 Dist 持久化成员与构建快照 — 支持 分架构视图 — 支持,包含架构无关包 包排除 --pigsty 使用固定清理规则 按 Dist 配置 版本数量限制 — 按 Dist 配置 元数据签名 — RPM 和 DEB RPM 包签名 …
-
第一个工作区
本例创建一个 Managed 仓库,包含两个具名软件包集合,称为 Dist: el9 存放 RPM,bookworm 存放 DEB。使用可写的空目录 /srv/sow,或换成其他路径。 初始化工作区 sow init /srv/sow cd /srv/sow init 创建: /srv/sow/ ├── sow.yml # 配置;schema: sow/v3 └── .sow/ # SOW 管理的私有状态 需要调整配置时,编辑 sow.yml。私有目录 .sow/ 由 SOW 管理。 重复执行 …
本例创建一个 Managed 仓库,包含两个具名软件包集合,称为 Dist: el9 存放 RPM,bookworm 存放 DEB。使用可写的空目录 /srv/sow,或换成其他路径。 初始化工作区 sow init /srv/sow cd /srv/sow init 创建: /srv/sow/ ├── sow.yml # 配置;schema: sow/v3 └── .sow/ # SOW 管理的私有状态 需要调整配置时,编辑 sow.yml。私有目录 .sow/ 由 SOW 管理。 重复执行 …
-
Managed 工作区
定期更新的仓库适合使用 Managed 模式。SOW 记录包成员关系、执行 Dist 策略、构建元数据, 并保留操作历史。 工作区、仓库与 Dist Workspace(工作区) └── Repository(仓库) └── Dist(软件包集合) └── Architecture view(架构视图) 术语 用途 工作区 保存 sow.yml、私有 .sow/ 状态和允许的架构族 仓库 拥有独立包池、Dist、SQLite 数据库、构建快照(Generation)和发布状态 Dist 按名称组 …
定期更新的仓库适合使用 Managed 模式。SOW 记录包成员关系、执行 Dist 策略、构建元数据, 并保留操作历史。 工作区、仓库与 Dist Workspace(工作区) └── Repository(仓库) └── Dist(软件包集合) └── Architecture view(架构视图) 术语 用途 工作区 保存 sow.yml、私有 .sow/ 状态和允许的架构族 仓库 拥有独立包池、Dist、SQLite 数据库、构建快照(Generation)和发布状态 Dist 按名称组 …
-
sow.yml 配置参考
sow.yml 配置 Managed 工作区,声明仓库、Dist、包策略、签名与发布目标。 Plain 命令 sow create 不读取此文件。 编辑后,检查配置并查看实际生效的设置: sow config check sow config show --all config check 校验 YAML、比较配置与已初始化的仓库状态,并解析签名引用。 config show --all 展开默认值。 文件规则 使用一个 YAML 文档,配置 schema: sow/v3。 未知字段和重复键都是 …
sow.yml 配置 Managed 工作区,声明仓库、Dist、包策略、签名与发布目标。 Plain 命令 sow create 不读取此文件。 编辑后,检查配置并查看实际生效的设置: sow config check sow config show --all config check 校验 YAML、比较配置与已初始化的仓库状态,并解析签名引用。 config show --all 展开默认值。 文件规则 使用一个 YAML 文档,配置 schema: sow/v3。 未知字段和重复键都是 …
-
搭建 APT 仓库
本教程从零创建一个 Managed DEB 仓库。先安装 SOW、Python 3,并准备适合目标客户端的 DEB 文件。使用当前用户可创建、可写入的空目录 /srv/sow,或换成其他可写路径。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new trixie --format deb -r pigsty Dist 名称 trixie 对应客户端配置中的 Suites,可以按需要更 …
本教程从零创建一个 Managed DEB 仓库。先安装 SOW、Python 3,并准备适合目标客户端的 DEB 文件。使用当前用户可创建、可写入的空目录 /srv/sow,或换成其他可写路径。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new trixie --format deb -r pigsty Dist 名称 trixie 对应客户端配置中的 Suites,可以按需要更 …
-
sow init
sow init 创建工作区的 sow.yml 与私有状态目录 .sow/。如果配置中已声明仓库和 Dist,它会创建尚未初始化的对象。添加声明后,可再次运行此命令完成初始化。 语法 sow init [DIR] [--json] DIR 默认为当前目录。需要初始化其他目录时,将它的路径作为 DIR 传入。 说明 首次 init 写出最小配置与私有状态目录: sow init . initialized /srv/repo: config_created=true …
sow init 创建工作区的 sow.yml 与私有状态目录 .sow/。如果配置中已声明仓库和 Dist,它会创建尚未初始化的对象。添加声明后,可再次运行此命令完成初始化。 语法 sow init [DIR] [--json] DIR 默认为当前目录。需要初始化其他目录时,将它的路径作为 DIR 传入。 说明 首次 init 写出最小配置与私有状态目录: sow init . initialized /srv/repo: config_created=true …
-
上手
SOW 为 RPM 与 DEB 软件包生成 YUM 与 APT 静态仓库。安装 SOW 后,按需要选择管理方式: Plain 模式: 执行 sow create DIR,为目录中的软件包生成索引。 Managed 模式: 创建工作区,按 Dist 组织软件包、限制版本数、签署元数据并发布更新。 安装 — 安装发布归档、Linux 软件包,或从源码构建。 快速上手 — 创建平面仓库,并用本机客户端访问。 第一个工作区 — 创建 RPM 与 DEB Dist,添加软件包并检查结果。 核心概念 — 理 …
SOW 为 RPM 与 DEB 软件包生成 YUM 与 APT 静态仓库。安装 SOW 后,按需要选择管理方式: Plain 模式: 执行 sow create DIR,为目录中的软件包生成索引。 Managed 模式: 创建工作区,按 Dist 组织软件包、限制版本数、签署元数据并发布更新。 安装 — 安装发布归档、Linux 软件包,或从源码构建。 快速上手 — 创建平面仓库,并用本机客户端访问。 第一个工作区 — 创建 RPM 与 DEB Dist,添加软件包并检查结果。 核心概念 — 理 …
-
搭建 YUM 仓库
本教程从零创建一个 Managed RPM 仓库。先安装 SOW、Python 3,并准备适合目标客户端的 RPM 文件。使用当前用户可创建、可写入的空目录 /srv/sow,或换成其他可写路径。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new el9 --format rpm -r pigsty el9 是这个 RPM 包集合的名称,可以按需要更改。它不改变软件包的操作系统兼容 …
本教程从零创建一个 Managed RPM 仓库。先安装 SOW、Python 3,并准备适合目标客户端的 RPM 文件。使用当前用户可创建、可写入的空目录 /srv/sow,或换成其他可写路径。 1. 创建工作区 mkdir -p /srv/sow cd /srv/sow sow init . sow repo new pigsty sow dist new el9 --format rpm -r pigsty el9 是这个 RPM 包集合的名称,可以按需要更改。它不改变软件包的操作系统兼容 …
-
设计归档
设计归档解释 SOW 在仓库布局、状态模型和发布流程上的选择。 文章日期记录决策成文时间,修改日期记录后续修订。 了解当前设计,可以从以下文章开始: 系统模型:软件包、发行版、构建快照与发布目标。 一棵包体树:为什么多个视图共用包池。 发布与恢复:上传顺序、检查点与清理。 设计原则:状态归属与写入协调。 历史系列介绍 v0.1 产品计划、设计决策与测试,以及 v0.2 重构和后续版本,并链接到对应源码快照。 当前命令见 SOW 文档,各版本变化见发布说明。
设计归档解释 SOW 在仓库布局、状态模型和发布流程上的选择。 文章日期记录决策成文时间,修改日期记录后续修订。 了解当前设计,可以从以下文章开始: 系统模型:软件包、发行版、构建快照与发布目标。 一棵包体树:为什么多个视图共用包池。 发布与恢复:上传顺序、检查点与清理。 设计原则:状态归属与写入协调。 历史系列介绍 v0.1 产品计划、设计决策与测试,以及 v0.2 重构和后续版本,并链接到对应源码快照。 当前命令见 SOW 文档,各版本变化见发布说明。