镜像
自动镜像
软件包的 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 之外的任何端口),则必须手动镜像文件。否则可能会导致各种严格防火墙问题。
第三方镜像
第三方镜像和 mirror://
伪协议的使用在 SRC_URI 变量文档 中进行了描述。