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
52 lines
3.3 KiB
Markdown
52 lines
3.3 KiB
Markdown
# [omarchycn] 软件仓库
|
||
|
||
OmarchyCN 的 pacman 仓库托管在 Gitea Arch package registry,每个上传的包由
|
||
registry 密钥自动签名,数据库同源生成。
|
||
|
||
# [omarchy] 上游仓库镜像
|
||
|
||
上游 `pkgs.omarchy.org`(Cloudflare 托管)的 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 层——每次发布前需核对上游版本。
|
||
|
||
## 接入
|
||
|
||
```bash
|
||
# 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](release-signing.md)) |
|
||
|
||
## 发布包
|
||
|
||
维护者构建与上传(keyring 示例):
|
||
|
||
```bash
|
||
./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
|
||
```
|