跳转至内容

DeveloperWiki:NewMirrors

来自 ArchWiki

添加新镜像

本文旨在概述为 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

注意:在使用 rsync-ssl(1) 时,数字证书的验证仅能在使用 gnutls 和 openssl SSL 类型时完成。在 syncrepo-template.sh 文件中启用 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 的缓冲区。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.