# [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 " \ --upload-file packages/out/omarchycn-keyring--any.pkg.tar.zst \ https://git.zacharyzhang.com/api/packages/ZacharyZhang-NY/arch/omarchycn ```