Artifactory 人工旧版本

Artifactory 人工旧版本,artifactory,Artifactory,因此,我很想镜像整个回购协议,但这似乎不那么容易(如图所示) 我确实有一个问题,假设我在Artifactory中有一个远程回购设置,我将它设置为永不过期缓存。当一个包从源repo中删除,但它在Artifactory的缓存中时会发生什么?我仍然可以通过apt/yum或其他方式安装它吗?一个很好的例子是Ubuntu PPAs,当旧版本被取代时,它们似乎会删除旧版本,但我想使用Artifactory来冻结某些软件包的版本。通常,一旦缓存了一个工件(即至少下载一次),您不应该关心上游存储库中工件的状态。

因此,我很想镜像整个回购协议,但这似乎不那么容易(如图所示)


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

通常,一旦缓存了一个工件(即至少下载一次),您不应该关心上游存储库中工件的状态。这就是为什么Artifactory在您只能依赖自己的内部存储库的情况下表现出色的原因

但完整的答案比这要复杂一些。Artifactory使用我们称之为“过期资源”的东西。这些文件根据远程存储库的“元数据检索缓存周期”参数中定义的周期定期“过期”——请参阅讨论此参数和其他参数的部分

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

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

1.将存储库设置为“脱机”(请参阅)-这意味着Artifactory不会尝试从上游repo获取工件,而只为缓存的工件提供服务

2.将“元数据检索缓存周期”设置为更高的值(默认值为10分钟)


HTH,

谢谢,这确实有帮助,而且实际上直接回答了我的想法(即当PPA更新时,旧版本将从发布文件中删除)。我想知道Artifactory是否做了一些魔术来合并发布文件以保持其缓存的包可用,即使这些包在发布文件中被上游并替换为较新的包。这听起来像是添加远程repo,用wget“预热”缓存,然后将其设置为脱机,这可能是我的最佳选择。