DeveloperWiki:NewMirrors
添加新镜像
本文旨在概述为 Arch 软件包添加新镜像的流程。
关于私有镜像的注意事项
- 镜像的带宽并非免费。镜像站必须为提供给你的所有数据支付费用
- 即使你向你的 ISP 支付费用,这一点依然适用
- 一个完整的镜像大小超过 100 GiB
- 其中包含许多你可能永远不会用到的软件包
- 镜像运营商更希望你仅下载所需的软件包
- 在建立私有镜像之前,请务必查看 pacman/Tips and tricks#Network shared pacman cache 中列出的替代方案
两级镜像方案
由于高负载和带宽限制,Arch Linux 采用了两级镜像方案。
少数一级(Tier 1)镜像每小时直接从 archlinux.org 进行同步。
所有其他镜像应从一级镜像之一进行同步。不允许直接从 archlinux.org 同步。
面向镜像管理员
二级镜像要求
- 磁盘空间 >= 100 GiB
- 从一级镜像同步(详见 https://archlinux.org.cn/mirrors/tier/1/)
- 同步上游镜像的所有内容(即:不要仅同步部分软件仓库)
- 同步频率不得高于每小时一次,但每天应至少同步一次
- 在随机的分钟数开始同步,以便请求能与其他镜像站错开
- 使用以下 rsync 选项:
-rlptH --safe-links --delete-delay --delay-updates - 如果你希望向我们的用户发送停机通知,请使用 arch-mirrors-announce 列表。无需订阅即可发布内容。
- 支持 http 或 https
一级镜像要求
- 二级镜像要求
- 带宽 >= 100 Mbit/s
- rsync 支持
- 经过验证的可靠性(担任二级镜像一段时间,且拥有合理的在线率、对同步异常通知的响应等)
你可以直接使用 rsync,或将 syncrepo-template.sh 脚本 作为起点。请注意,该脚本在没有更改时会尝试最小化负载和带宽使用量(截至 2018-03-01,每次 rsync 运行约 3 MiB 元数据)。如果你同步不频繁或上游镜像不提供 lastupdate 文件,可以随意删除此检查。
基于 TLS 的 rsync
tls=1 选项时,默认使用 openssl。如果你希望使用基于 TLS 的 rsync,Arch Linux 通过 地理镜像 (geo mirrors) 提供 支持 TLS 的 rsync 端点,以及供一级镜像同步的 T0 端点。你可以使用 rsync-ssl(1),它是 rsync(1) 的封装。端口暴露在 874,这是 rsync-ssl 默认使用的端口。
若要为你的镜像设置基于 TLS 的 rsync,可以参考 Arch Linux 的实现模式,即使用支持 TLS 的 nginx 作为 rsync 守护进程的前端。利用 nginx-mod-stream 支持的 TCP 负载均衡,nginx 连接到 rsync 套接字并转发请求。rsync 需要在配置中启用 use proxy = on 功能才能工作,SSL 证书由 nginx 提供。关于进一步的实现,可以在 Arch Linux GitLab 上查看 Arch Linux 侧所做的更改。另一种产生类似结果的方法是使用 stunnel。
创建功能请求
- 我们不再接受新的 ftp 镜像。
- 如果你是在提交对现有镜像的更改
- 请使用最初在 Arch Linux GitLab 上提交该镜像的账户提交更改,或使用该镜像关联的联系邮箱发送邮件。
- (可选)在此处粘贴被修改镜像的链接:https://archlinux.org.cn/mirrors/。
前往 https://gitlab.archlinux.org/archlinux/arch-mirrors/-/issues 并创建包含以下信息的功能请求
- 镜像域名
- 镜像的地理位置(国家)
- 支持的访问方式 URL(http, https, rsync)(不支持 ftp)
- 镜像的可用带宽
- 管理员联系邮箱(可选,见下文)
- 备用管理员联系邮箱(可选)
- (一级镜像)Rsync IP,以便你的服务器被允许从 T0 (rsync.archlinux.org) 同步
- (二级镜像)你所同步的一级镜像名称。你可以在 https://archlinux.org.cn/mirrors/tier/1/ 中找到可用的一级镜像
联系邮箱将用于 Arch Linux 工作人员在有疑问或镜像出现问题时联系管理员。如果未提供联系邮箱,镜像列表可能会在任何时间被删除(尤其是出现问题时),且无需事先通知管理员。
如果镜像管理员在为现有镜像添加或修改 URL,可以在请求中注明并提供现有镜像的链接。
联系信息与邮件列表
欢迎加入 arch-mirrors 邮件列表,用于讨论关于镜像的一般问题。如果你想通知用户你的镜像停机,请使用 arch-mirrors-announce 邮件列表。无需订阅即可向 arch-mirrors-announce 发帖。
如果你有问题想联系 Arch Linux 工作人员,可以使用 arch-mirrors 列表,在我们的追踪系统中提交 Bug 报告,或发送邮件至 mirrors@archlinux.org。此外,还有一个 #archlinux-mirrors IRC 频道 用于讨论或提问。
Arch Linux 侧的操作
- 将镜像信息添加到 Django 管理网站
- 使用
gen_rsyncd.conf.pl脚本重新生成 rsync 白名单 —— 仅针对一级镜像,或在禁用之前未分级的镜像访问权限时(此操作也由每小时一次的 cron 任务完成) - 重新生成 pacman-mirrorlist 软件包
镜像容量
为了让你对镜像所需的空间有一个直观的认识,以下是一些数据(截至 2023-05-23)
必须同步
- pool (所有软件包) - 80 GiB
- repositories (core, core-testing, extra, extra-testing, gnome-unstable, kde-unstable, multilib, multilib-testing) - 总计 ~200 MiB
可选
- iso - 5 GiB (建议同步)
- archive - 15 GiB (永久冻结)
- other - 18 GiB
- sources - 114 GiB
- images - 6 GiB
- wsl - 500 MiB
- pool/*-debug - 60 GiB (未来可能会增长)
大多数镜像不同步 archive, other 和 sources 目录,但同步其他所有内容(包括临时仓库),因此通常需要为 Arch Linux 镜像预留约 70 GiB 空间。
然而,请注意,当发生大规模重新构建时,所需空间可能会暂时增加,因为许多软件包会以不同版本的形式同时存在。请在上述数值基础上预留 30 GiB 到 50 GiB 的缓冲区。