Packaging
GitHub Pages APT 源
这个仓库同时发布官网和预览 APT 源。官网是给人阅读的门户;APT repo 是给 apt 解析的机器目录。
当前机器目录保持在 /debian,以兼容已经发布的 lofibox.sources 示例。
目录结构
public/
index.html
assets/
docs/
.nojekyll
lofibox-archive-keyring.pgp
debian/
dists/trixie/...
pool/...
用户安装入口
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://vicliu624.github.io/lofibox-apt/lofibox-archive-keyring.pgp \
| sudo tee /etc/apt/keyrings/lofibox-archive-keyring.pgp >/dev/null
sudo tee /etc/apt/sources.list.d/lofibox.sources >/dev/null <<'EOF'
Types: deb
URIs: https://vicliu624.github.io/lofibox-apt/debian
Suites: trixie
Components: main
Architectures: amd64 arm64 armhf
Signed-By: /etc/apt/keyrings/lofibox-archive-keyring.pgp
EOF
发布流程
GitHub Actions workflow 会 checkout lofibox-apt 和 LoFiBox-Zero,构建 Debian 包,
使用 GPG key 生成 signed APT repo,然后把 site/ 静态官网复制到同一个 Pages artifact 根目录,
校验官网与 APT 源边界,然后部署 GitHub Pages。
被打包的应用源码来自 vicliu624/LoFiBox-Zero;
本仓库只负责官网门户和 APT 源发布。
- 推送到
main走默认发布流程,也可以手动触发Publish LoFiBox APT Repositoryworkflow。 - 选择
source_ref,通常是 LoFiBox-Zero 的 main 或 release tag。 - 选择 suite,当前默认
trixie。 - preview_suffix 使用
auto时生成~lofibox<run_number>后缀。 - 预览后缀会刻意排在未来 Debian 官方版本之前,所以 workflow 使用
dch -b应用这个版本。 - APT 仓库 suite 仍然发布为
trixie,但包内 changelog distribution 固定为unstable,避免 Lintian 把第三方源 suite 误判成无效上传目标。 - Lintian 使用
--profile debian,因为 GitHub runner 是 Ubuntu host,但这里检查的是 Debian packaging。 - 仓库会发布
amd64、arm64,以及兼容 Raspberry Pi ARMv6/CM0 的armhf包。armhf 构建会强制 ARMv6 hard-float flags,并用 ELF CPU attribute 校验。 - workflow 构建包、生成 repo、复制官网、校验
public/并部署 Pages。
0.2.0 的 APT CI 注意点
push 触发的正式发布路径是 publish-xbuild.yml。它和 LoFiBox-Zero 源码 CI 是两条线:
源码 CI 验证应用仓库,apt CI 会重新构建 Debian 包、校验包元数据、签名软件源,并发布合并后的 Pages artifact。
- 包构建通过
LOFIBOX_EXTRA_CMAKE_ARGS=-DLOFIBOX_BUILD_WEBUI=ON显式打开 WebUI。 - Ubuntu 依赖安装只使用
pkgconf,不同时安装pkgconf和pkg-config,避免 jammy 冲突。 - foreign architecture 的 apt 源会跟随 runner 自身 Ubuntu codename,因此 22.04 runner 使用 jammy ports,不混入 noble 包。
- 手动 arm64 构建使用原生
ubuntu-22.04-armrunner;cross-build 流程在发布前仍会校验产物架构。 - Pages 发布 job 会要求 amd64、arm64、armhf 三套包产物都存在,之后才签名并发布
/debian。
仓库设置
在 GitHub 仓库设置中,把 Pages source 设为 GitHub Actions,并添加下面的 Actions secrets。
推送到 main 会使用 LoFiBox-Zero main 和默认 suite 自动发布。
手动运行仍然可以选择指定 LoFiBox-Zero ref。
Secrets
| Secret | 用途 |
|---|---|
LOFIBOX_APT_GPG_PRIVATE_KEY | 导入用于 APT repository signing 的私钥,支持 ASCII-armored 或 base64 后的 private key 内容。 |
LOFIBOX_APT_GPG_KEY_ID | 传给 aptly / gpg 选择签名 key,推荐填写完整 fingerprint;如果不匹配,workflow 会退回到导入私钥的 fingerprint。 |
本地预览官网
cd lofibox-apt
python3 -m http.server --directory site 8080
# open the local preview in a browser
本地模拟 Pages artifact
scripts/stage-pages-site.sh --site site --output public
python3 -m http.server --directory public 8080
public/debian,也不要把 Debian pool 移到官网资源目录。
官网可以链接 APT key 和 deb822 示例,但不能改变 apt 客户端依赖的目录结构。