cd ~/repo
sow add ~/repo/packages/rpm --recursive -r infra -d rpm --skip
sow add ~/repo/packages/deb --recursive -r infra -d deb --skip
sow build -r infra -d rpm -d deb
sow check -r infra
sow check 返回 0,才算初始化完成。再核对 SOW 从包头读出的真实格式与架构:
sow ls -r infra -d rpm -d deb --json | jq -r '.result.packages | group_by(.format + "/" + .canonical_arch)[] |
"\(.[0].format)\t\(.[0].canonical_arch)\t\(length) packages"'
预期至少出现:
deb aarch64 ... packages
deb x86_64 ... packages
rpm aarch64 ... packages
rpm x86_64 ... packages
SOW 使用规范化架构名,因此 DEB 的 amd64/arm64 在这里显示为 x86_64/aarch64。
cd ~/repo
sow dist new rpm-stable --format rpm -r infra
sow dist new deb-stable --format deb -r infra
sow config show --all -r infra -d rpm-stable -d deb-stable
cd ~/repo
sow check -r infra
mkdir -p ~/repo/manifests
sow ls -r infra -d rpm --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/rpm-latest-202608.list
sow ls -r infra -d deb --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/deb-latest-202608.list
在晋升结束前暂停对 rpm 与 deb 的写入,然后复用这些 pool 对象:
cd ~/repo
(set -e
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d rpm-stable --skip
done < ~/repo/manifests/rpm-latest-202608.list
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d deb-stable --skip
done < ~/repo/manifests/deb-latest-202608.list
sow build -r infra -d rpm-stable -d deb-stable
sow check -r infra
)
cd ~/repo
sow dist new rpm-202608 --format rpm -r infra
sow dist new deb-202608 --format deb -r infra
sow config show --all -r infra -d rpm-202608 -d deb-202608
在快照窗口内暂停 stable 写入,先把其精确 Membership 固化为清单:
sow check -r infra
sow ls -r infra -d rpm-stable --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/rpm-stable-202608.list
sow ls -r infra -d deb-stable --json | jq -r '.result.packages[].pool_path' > ~/repo/manifests/deb-stable-202608.list
再把清单加入对应快照 Dist:
cd ~/repo
(set -e
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d rpm-202608 --skip
done < ~/repo/manifests/rpm-stable-202608.list
whileIFS=read -r pool_path;do sow add "$HOME/repo/infra/$pool_path" -r infra -d deb-202608 --skip
done < ~/repo/manifests/deb-stable-202608.list
sow build -r infra -d rpm-202608 -d deb-202608
sow check -r infra
)