搭建 APT 仓库
本教程从零创建一个 Managed DEB 仓库。先安装 SOW、Python 3,并准备适合目标客户端的 DEB 文件。使用当前用户可创建、可写入的空目录 /srv/sow,或换成其他可写路径。
创建工作区
Dist 名称 trixie 对应客户端配置中的 Suites,可以按需要更改。它不改变软件包的发行版兼容性。
配置成员策略
如果需要过滤或限制版本,编辑生成的 sow.yml:
然后校验:
配置中的 x86_64、aarch64 分别生成 Debian 的 amd64、arm64 索引。
架构无关的 all 包进入两个视图。
添加 DEB
把输入路径换成实际 DEB 目录。add 将接受的软件包保存一次,并构建索引。公共目录树如下:
/srv/sow/pigsty/
- pool/
dists/trixie/
- Release
main/
binary-amd64/
- Packages
- Packages.gz
- by-hash/SHA256/
- binary-arm64/
Packages 中的 Filename 相对于仓库根目录。保留完整目录树,客户端才能找到软件包。SOW 生成 by-hash 索引,供 APT 按内容哈希获取元数据。
HTTP 预览
在另一个终端执行以下命令,并保持运行:
预览只提供仓库根目录中的文件,并且只能从本机访问。长期运行或供其他主机访问时,按对外服务配置。
配置 APT
在运行预览的 Linux 主机上,把以下内容保存为 /etc/apt/sources.list.d/pigsty.sources。ARM64 客户端将 Architectures 改为 arm64。远程客户端需先发布仓库,再换成其公共地址:
刷新并查询:
输出中应出现 trixie/main 的软件包来源。Trusted: yes 用于本例的未签名仓库。
需要签名时,按仓库签名生成签名、安装公钥并配置 Signed-By。
预览完成后,删除测试源配置文件并停止 Python 服务器。
发布仓库
使用 sow publish 发布到 filesystem 或 R2 目标。它先上传软件包与索引,再更新 Release 及其签名。隔离主机的手工交付步骤也见该教程。
更新仓库
add 会自动构建更新。配置 limit: 1 后,同包名、同架构的最新版本会替换此前成员。修改配置后执行 sow build -r pigsty。
撤下软件包时,先用 sow rm PACKAGE_NAME -r pigsty -d trixie --check 预览选择结果,再去掉 --check 执行。包名会选中其全部版本与架构;只删除一个包对象时,使用 SHA-256 引用。
已测试客户端见平台与集成。