Files
omarchycn/docs/pacman-repo.md
T
ZacharyZhang-NYandClaude Fable 5 c4dcd2b63a Document and test the [omarchy] mirror wiring
Static suite assertions pin the stable conf's server order and keep
edge/rc upstream-only; the guard test proves exact-line semantics.
docs/pacman-repo.md gains the mirror section with the honest
operational contract: staleness is invisible to pacman, fallback
fires only on retrieval failure, and omarchy-refresh-pacman's -Syyuu
downgrade wipes the cn layer while upstream ships older omarchy-dev.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019hLK3wsDuKVAC37GgDqg6H
2026-08-27 16:29:34 -04:00

3.3 KiB
Raw Permalink Blame History

[omarchycn] 软件仓库

OmarchyCN 的 pacman 仓库托管在 Gitea Arch package registry,每个上传的包由 registry 密钥自动签名,数据库同源生成。

[omarchy] 上游仓库镜像

上游 pkgs.omarchy.orgCloudflare 托管)的 stable 通道被完整镜像到同一 Gitea registry 的 omarchy 仓库。packages/sync-omarchy-repo.sh 按文件名对上游与镜像 db 做差集,缺失包转传、上游移除的按 name/version/arch 精确删除;.gitea/workflows/pkg-repo-sync.yml 每 6 小时调度一次(幂等,可手动 dispatch)。正常情况下镜像滞后不超过一个周期;调度失败或 runner 掉线时滞后会持续到下一次成功运行。注意 pacman 无法感知"陈旧":只要镜像可达,客户端就使用镜像的 db,看到的是滞后版本;只有镜像无法提供所请求的 db/包文件(宕机、404)时才回退到上游 Server。

客户端接线(default/pacman/pacman-stable.conf):[omarchy] 段镜像行在前、上游为兜底。镜像 db 由 registry 密钥签名,因此系统必须信任该公钥——安装期由 install/post-install/pacman.sh 导入,既有系统由 cn 迁移 1787861071.sh 处理。仅 stable 被镜像:Gitea 仓库名必须等于 pacman 段名(客户端固定请求 omarchy.db),edge/rc 通道保持上游直连。

omarchy-refresh-pacman 会用检出内模板覆写 /etc/pacman.conf:ISO/包安装系统的模板自带镜像行;overlay 系统的模板来自上游,覆写后镜像行丢失,用 omarchycn doctor mirror --fix 重新插入。

已知事实:上游仓库本身含 omarchy/omarchy-dev 包,当前版本(4.0.0.r1832)低于 cn 层自构建版本(r1955+)。常规 pacman -Syu 不会降级覆盖;但 omarchy-refresh-pacman 收尾运行的是 pacman -Syyuu-uu 明确允许降级——在任何 cn 系统上执行都会把 omarchy-dev 降回上游版本、抹掉 cn 层(该风险先于本镜像存在,镜像只是如实转载上游内容)。若上游版本号超过 cn 构建,普通 -Syu 也会覆盖 cn 层——每次发布前需核对上游版本。

接入

# 1. 导入并信任 registry 公钥(首次)
curl -sSf https://git.zacharyzhang.com/api/packages/ZacharyZhang-NY/arch/repository.key -o /tmp/omarchycn-reg.key
sudo pacman-key --add /tmp/omarchycn-reg.key
sudo pacman-key --lsign-key 74DCF57ACD812B24D959F146BD386048867B33B4

# 2. 添加仓库
cat << 'EOF' | sudo tee -a /etc/pacman.conf
[omarchycn]
SigLevel = Required DatabaseOptional
Server = https://git.zacharyzhang.com/api/packages/ZacharyZhang-NY/arch/omarchycn/x86_64
EOF

# 3. 安装 keyring(含 registry 与 release 两把公钥及信任配置)
sudo pacman -Syu omarchycn-keyring

密钥

用途 指纹
Registry 包签名(Gitea 自动) 74DCF57ACD812B24D959F146BD386048867B33B4
Release 产物签名(ISO/清单) 04490F065F6ADD262A7243506EDF7B8603B5D247(见 release-signing.md

发布包

维护者构建与上传(keyring 示例):

./packages/build-keyring.sh
curl -X PUT -H "Authorization: token <token>" \
  --upload-file packages/out/omarchycn-keyring-<ver>-any.pkg.tar.zst \
  https://git.zacharyzhang.com/api/packages/ZacharyZhang-NY/arch/omarchycn