建立一个 Debian 仓库的镜像
是否需要镜像
当我们赞扬新的镜像时,每个潜在的镜像维护者应确保在尝试开始建立自己的镜像之前可以回答以下问题:
- 我所在的位置是否需要镜像?也许附近已经有镜像了。
- 我有资源托管镜像吗?镜像会占用大量磁盘空间和带宽,因此必须承担一定的成本。
- 镜像是正确的选择吗?如果您主要想为您的 ISP 或机构的用户提供支持,那么诸如 apt-cacher-ng、squid 或 varnish 之类的缓存代理可能是更好的选择。
镜像什么内容
在主镜像站点页列出了可供镜像的仓库。
- 用户会寻找 debian /仓库,用以通过网络安装 Debian、(使用 jigdo)构建 CD 以及升级已安装的系统。我们建议您镜像此存储库。
-
debian-cd/ 是一个在所有不同的镜像服务器上都不相同的仓库。在某些站点上,它包含用于从中构建 CD 映像的 jigdo 模板(与 debian/ 中的文件结合使用);在某些站点上,它包含已构建的 CD 映像;在某些站点上,两者都被包含。
请参阅镜像 CD 映像的页面,以获取有关此内容的更多信息。 - debian-archive/ 包含 Debian 当前的存档、旧版本和过时版本。通常只有一小部分用户对此感兴趣。(如果您不知道是否要镜像,那么可能不需要。)
请参阅镜像大小页面,以获取有关镜像大小的更准确的信息。
debian-security/ 仓库包含 Debian 安全团队发布的安全更新。虽然这听起来对每个人都很有趣,但是我们不建议我们的用户使用镜像来获取安全更新,而是要求他们直接从我们的分布式 security.debian.org 服务中下载更新。我们不推荐镜像 debian-security。
从哪建立镜像
请注意,ftp.debian.org
不是 Debian 软件包的规范存放位置,它仅是从内部 Debian 服务器进行更新的几台服务器之一。
有许多支持 rsync 的公共镜像站点,从这些站点进行镜像是很合适的。请从网络角度使用离您最近的站点。
您应该避免从会被解析为多个地址(例如 ftp.us.debian.org
)的任何服务名称进行镜像,因为这可能会导致当您的上游镜像不同步时,您的同步镜像处于不同的状态。
另请注意,HTTP 是唯一一个我们保证存在于 ftp.CC.debian.org
的服务。如果要使用 rsync 镜像(建议使用 ftpsync),我们建议您为当前提供 ftp.CC.debian.org
的机器选择正确的站点名称。(请查看该服务器上的 /debian/project/trace
目录以了解这一点)
如何镜像
推荐的镜像方法是使用 ftpsync 脚本集,我们提供了以下几种方法供您获取它:
- 作为一个 tarball 从 https://ftp-master.debian.org/ftpsync.tar.gz 下载
- 作为一个 git 存储库: git clone https://salsa.debian.org/mirror-team/archvsync.git (请参阅 https://salsa.debian.org/mirror-team/archvsync/)
- 作为一个 Debian 软件包:ftpsync
请不要使用自己的脚本,也不要仅使用单遍 rsyncs。使用 ftpsync 可确保以某种方式完成更新,以便令 apt 不产生混乱。特别是,ftpsync 会按一定顺序处理翻译、内容和其他元数据文件,以便如果用户在镜像进行同步时更新软件包列表,apt 也不会出现验证错误。此外,它还会生成包含更多信息的跟踪文件,这些信息对于确定镜像是否正常工作、镜像同步的体系架构以及它从何处进行同步很有用。
部分镜像
考虑到Debian 仓库已经很大,我们建议只镜像仓库的一部分。公共镜像应当包含所有软件包(测试、不稳定等),但是它们可能会限制它们同步的体系架构集。ftpsync 的配置文件为此设有 ARCH_EXCLUDE 和 ARCH_INCLUDE 设置选项。
何时镜像
主仓库每天更新四次。镜像通常在 3:00、9:00、15:00 和 21:00(所有时间均为 UTC)左右开始更新,但这些时间从来都不是固定的时间,因此您不应将您的镜像同步时间固定在这些时间上。
您的镜像应当在主仓库镜像更新之后几个小时进行更新。您应检查要镜像的站点是否在其 project/trace/ 子目录下保留了一个时间戳文件。该时间戳文件与该站点重名,会包含站点上次更新镜像的完成时间。为了安全起见,请在此完成时间上增加几个小时,然后进行镜像。
您的镜像与主仓库保持同步是至关重要的。每24小时至少更新4次以确保您的镜像真实地反映了仓库。请理解这点:与主仓库文件不同步的镜像将不会在官方镜像列表中被列出。
实现每天自动运行镜像同步的最简单的方法是使用 cron。查看 man crontab 以获得详细信息。
请注意,如果您的站点是通过推送机制触发同步的,那您无需担心任何此类情况。
Push-triggered 镜像
推送
镜像是我们开发的一种镜像形式,可最大程度地减少仓库文件的更改同步到镜像站点所需的时间。上游镜像使用一个 SSH 触发器来告诉下游镜像自行更新。有关其工作原理、为什么它是安全的以及如何设置推送镜像的详细说明,请参见完整说明。
推荐的额外设置
公共镜像应该令 Debian 仓库文件在 /debian
下可以通过 HTTP 访问。
此外,请确保已启用目录列表(带有完整的文件名),并遵循符号链接。 如果您使用 Apache,如下配置应该能使用:
<Directory /path/to/your/debian/mirror> Options +Indexes +SymlinksIfOwnerMatch IndexOptions NameWidth=* +SuppressDescription </Directory>
如何将一个镜像添加到镜像列表
如果您想让自己的镜像在官方镜像列表中被列出,请:
- 确保您的镜像每24小时与仓库同步4次
- 确保您的镜像包含所同步的体系架构的源代码文件
设置好镜像后,应在 Debian 注册,以使其被包含在官方镜像列表。可以使用我们的简单 web 表单来提交。
如有任何问题或疑问,可以发送电邮到 mirrors@debian.org 询问。
邮件列表
有关于 Debian 镜像,存在两个公共邮件列表: debian-mirrors-announce 和debian-mirrors。我们鼓励所有镜像维护者订阅公告列表,因为它会被用于发布任何重要的公告。此列表受到审核,订阅此列表只会收到少量邮件。第二个邮件列表用于一般性的讨论,向所有人开放。
如果您存在一些在这些网页上无法得到回答的问题,可以通过 mirrors@debian.org 或使用在 irc.debian.org 上的 IRC 聊天室 #debian-mirrors 联系我们。
专用(部分)镜像的注意事项
如果您只想为自己的站点建立一个镜像,并且只需要同步一部分软件包(例如稳定版),debmirror 可能也很适合您。