镜像

自动镜像

软件包的 SRC_URI 组件会自动镜像到 Gentoo 镜像中,包括那些托管在官方 Gentoo 基础设施上的镜像(例如 dev.gentoo.org 上的开发者空间)。获取时,包管理器会先检查 Gentoo 镜像,然后再尝试原始的上游位置。

这通常是期望的行为——上游镜像容易被重新排列、清理或修改文件。

限制自动镜像

可以使用三个 RESTRICT 关键字来控制镜像过程。

如果我们无法合法地镜像某些文件,则应使用 RESTRICT="mirror" 设置;文件仍将从原始位置下载。

RESTRICT="primaryuri" 设置会导致 Portage 首先尝试原始位置,然后在必要时回退到镜像。在新 ebuild 中不应使用此设置。

还有一个 RESTRICT="fetch",它可以阻止 Portage 手动尝试获取任何内容。如果找不到任何 SRC_URI 组件,则将调用 pkg_nofetch 函数。仅当许可证要求时才应使用此设置。

替换自动镜像的文件

在极少数情况下,您可能需要替换已镜像的文件。这通常发生在上游重新制作发行版软件包时。如果需要,请使用 SRC_URI 箭头重命名文件。例如

# upstream updated the distfile in place, so suffix it with _YYYYMMDD
SRC_URI="https://example.com/badupstream/${P}.tar.gz -> ${P}_20191016.tar.gz"

由于 Gentoo 镜像使用本地 distfile 名称进行操作,因此它们将自动获取并开始分发新版本。

更新现有的 distfile 通常会引起关注,必须谨慎操作,请参阅 更新清单文件

有关镜像内部机制的更多一般信息,可以在 基础设施项目的 Distfile 镜像系统页面 上找到。

合适的下载主机

如果您必须自己托管源文件(补丁或 tarball),只要它可以自由分发(根据许可证和法律),建议您使用 dev.gentoo.org 上的开发者空间。由于外部覆盖层可能依赖于您的补丁/tarball,因此使用 dev.gentoo.org 上的开发者空间可以使 distfile 保持在稳定可靠的基础设施上。如果您退休,其他开发者可以接管您的 distfile 并将其放置到他们自己的开发者空间中。

之前的策略是直接使用 mirror://gentoo,但这现在被禁止了,因为这样无法实现源文件的长期可用性和可追溯性,而这可能是许可证的要求。

将 distfile 上传到 dev.gentoo.org:~/public_html 时,请确保您的文件及其父目录具有正确的权限,以便可以访问它们。引用以这种方式镜像的 distfile 的 SRC_URI 示例如下

SRC_URI="https://dev.gentoo.org/~myname/distfiles/${P}.tar.gz"

其中 myname 指的是开发者的用户名。

如果软件包的上游下载位置使用非标准 TCP 端口(除 21、80 或 443 之外的任何端口),则必须手动镜像文件。否则可能会导致各种严格防火墙问题。

镜像过程

Mirroring Process

显示镜像过程的图表。

第三方镜像

第三方镜像和 mirror:// 伪协议的使用在 SRC_URI 变量文档 中进行了描述。