01 / 快速创建
索引软件包目录
◇ 直接把装有软件包的目录交给 SOW
sow create就地索引目录顶层的 RPM 与 DEB 文件- 生成 rpm-md 元数据与 APT Packages 索引
- 替换已有 YUM 索引时,可指定元数据时间戳
用静态 HTTP 服务器提供生成后的目录。
$ sow create /srv/repo --jobs 8
$ python3 -m http.server 8080 --bind 127.0.0.1 --directory /srv/repo
两种建库方式
Plain 模式索引目录内的软件包。Managed 模式管理软件包选择、构建记录与发布历史。
01 / 快速创建
◇ 直接把装有软件包的目录交给 SOW
sow create 就地索引目录顶层的 RPM 与 DEB 文件用静态 HTTP 服务器提供生成后的目录。
$ sow create /srv/repo --jobs 8
$ python3 -m http.server 8080 --bind 127.0.0.1 --directory /srv/repo
02 / 托管模式
◇ 统一管理 Enterprise Linux、Debian 与 Ubuntu 仓库
为各个发行版选择软件包,并构建索引。
03 / 开箱即用
◇ macOS 与 Linux 使用一致的命令接口
amd64 与 arm64 归档直接运行 SOW 命令。Managed 状态保存在内嵌 SQLite 数据库中。
04 / 增量同步
◇ 发布到文件系统或 Cloudflare R2
sow changes 列出两次本地构建之间的文件变化在 sow.yml 中配置目标,然后运行 sow publish TARGET。
$ sow changes -r pgsql
$ sow publish prod
$ sow status -r pgsql
运行模型
分别管理软件包选择、本地构建和远端发布。
Plain 模式每次读取目录。添加或删除软件包文件后,再运行 sow create。
Managed 模式记录软件包选择与已完成的构建。运行 sow status 查看是否需要构建。
运行 sow check 校验 Managed 仓库。运行 sow publish TARGET 更新已配置的目标。
常见问题
两种模式使用同一个 SOW 可执行文件。
索引已有软件包目录时,使用 Plain 模式。需要按发行版选择软件包、设置版本保留规则、签署元数据或发布更新时,使用 Managed 工作区。
使用 RPM XML 元数据的仓库可以替换。通过 --metadata-timestamp 保持发布时间递增;如果客户端要求索引签名,构建后签署最终索引。操作步骤与元数据格式见 YUM 迁移指南。
--sign-with 为未签名 RPM 包补签。Plain 模式需要在最后一次建库后单独签署 repomd.xml;Managed 模式通过配置管理元数据签名策略。两种流程见仓库签名。
可以。Plain 目录可同时放置 RPM 与 DEB 软件包。在 Managed 模式中,每个 Dist 只有一种格式,同一个仓库可以包含多个 RPM 与 DEB Dist。
不需要。SOW 通过命令生成静态文件,Managed 模式使用本地 SQLite 数据库。用静态 HTTP 服务器提供包含 pool/ 与 dists/ 的仓库根目录。
可以发布到本地或挂载的文件系统,也可以发布到 Cloudflare R2。每个目标单独记录发布检查点,sow publish 据此选择下次需要更新的文件。