Artifactory 旧版本

Artifactory Old Versions

所以我很想镜像整个存储库,但似乎并不那么容易(How do I use Artifactory to mirror linux distributions? 证明了这一点)

我确实有一个问题,假设我在 Artifactory 中设置了远程回购,并将其设置为永不过期缓存。当包从源代码库中删除但它在 Artifactory 的缓存中时会发生什么?我仍然可以通过 apt/yum 或其他方式安装它吗?一个很好的例子是 Ubuntu PPA,它们似乎在被取代时删除旧版本,但我想使用 Artifactory 来冻结某些包的版本。

一般来说,一旦工件被缓存(即至少下载一次),您就不必担心上游存储库中工件的状态。这就是为什么 Artifactory 在你只能依赖你自己的内部存储库的情况下表现出色的原因。

但完整的答案比这复杂一点。 Artifactory 使用我们称之为 "expirable resources" 的东西。这些文件根据远程存储库的 "Metadata Retrieval Cache Period" 参数中定义的周期定期 "expire" - 请参阅 Cache Settings 部分讨论此参数以及其他一些参数。

请注意,此设置仅影响 Artifactory 认为可过期的特定文件。这些总是元数据文件,例如 Debian 存储库的 "Packages" 文件或 "Release" 文件。潜在的假设是这些文件偶尔会在上游存储库中更改,并且包含对相关工件的较新版本的引用,因此您不想永远保留过时的副本。 其他(非过期)文件将永远缓存在 Artifactory 中,除非您有意删除它们,因为它们是 "release" 工件,并且发布工件是不可变的。

如果 .deb 文件已从上游存储库中删除,则引用它的元数据文件(即 "Packages" 文件包含对此 .deb 文件及其父文件的所有版本的引用 "Release" 文件) 也会相应地更改,这可能实际上意味着一旦旧版本过期并重新获取,您将无法使用 APT 客户端下载这些旧版本。 如果您想将远程存储库保留在某种状态,您有两个选择:

1.Setting 存储库为 "Offline"(参见 Additional Basic Settings)——这意味着 Artifactory 不会尝试从上游存储库获取工件,而只会提供缓存的工件。

2.Set 将 "Metadata Retrieval Cache Period" 改为更高的值(默认值为 10 分钟)。

HTH,