安装 SOW

下载预编译二进制或从源码构建,并验证安装结果。

SOW 以单个静态可执行文件分发。所谓安装,就是把这一个文件放到 PATH 上的某个位置。 没有软件包要装,没有服务要启用,在你执行第一条需要落盘的命令之前,它也不会创建任何 状态目录。

支持的平台

二进制以 CGO_ENABLED=0 构建,不依赖 libc,可在对应操作系统与 CPU 架构的任意现代内核上运行。

操作系统amd64arm64
Linux支持支持
macOS(Darwin)支持支持

不支持 Windows。SOW 依赖 POSIX 建议锁、硬链接与原子 rename,且只在本地 POSIX 文件系统上 验证过 —— NFS 之类的网络文件系统不提供它所需的锁与持久化语义。

下载发行版本

各平台的预编译二进制发布在 GitHub Releases 页面。下载与你的操作系统和架构 匹配的压缩包,解压后放到 PATH 上:

tar -xzf sow_*.tar.gz
sudo install -m 0755 sow /usr/local/bin/sow

如果机器上没有 root,放到 ~/.local/bin 同样可用 —— SOW 自身的运行从不需要提权。

从源码构建

构建只需要 Go 工具链。克隆仓库并构建 cmd/sow 入口:

git clone https://github.com/pgsty/sow.git
cd sow
CGO_ENABLED=0 go build -trimpath -o sow ./cmd/sow

设置 GOOSGOARCH 即可交叉编译;因为没有 cgo,交叉构建不需要 Go 之外的任何工具链:

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o sow-linux-arm64 ./cmd/sow

验证安装

sow version
sow 0.2.0-dev darwin/arm64 go1.26.5

这一行给出 SOW 版本、二进制针对的平台,以及构建它的 Go 工具链版本。sow --version 输出相同内容。

查看完整命令树:

sow help

每条命令都有自己的帮助页 —— sow help createsow help dist new 等等 —— 其中列出该命令确切接受的参数。不在该命令参数矩阵内的 flag 会被拒绝,而不是被忽略。

外部依赖

生成仓库元数据的全过程不调用任何外部程序。SOW 自己解析 RPM 头与 Debian control 文件、 自己算校验和、在进程内写出 repodata/PackagesReleasecreaterepo_cdpkg-scanpackagesreprepromodifyrepo_c 都不会被执行。

只有两项可选能力会用到环境中的工具:

能力需要原因
RPM 包体签名 —— sow create --sign-with,或 Managed 的 packages.modefill / alwaysrpm 与可用的 GPG 环境包体签名由 rpm --addsign 对私有 stage 副本产生
使用 agent://<fingerprint> 密钥引用的元数据签名gpg 与运行中的 gpg-agent私钥留在 agent 内,不进入 SOW 进程

使用 file://env:// 密钥引用的元数据签名在进程内完成,不需要外部 GPG。 完整配置见仓库签名

下一步

最后修改:2026-08-08: init commit (fe725aa)