0

我已经使用以下命令上传了一个 debian 文件

curl -H -u$ARTIFACTORY_USER:$ARTIFACTORY_TOKEN -XPUT "http://artifactory-url/artifactory/debian/pool/$package;deb.distribution=trusty;deb.component=main;deb.architecture=all" -T $package

即使 10 分钟后,我也无法通过apt-get update && apt-get download $package. 获取“无法找到包裹”。

但是当我通过 UI 上传文件时,它会在一分钟后变为可用。此外,当我单击重新索引时,它会在一分钟后变为可用。

我正在我们的 CI 管道中执行此操作,上传到工件后,我需要该工件在一分钟内可用以进行下一步。在这种情况下我该怎么办?为什么通过 curl 上传不索引包?

4

1 回答 1

2

要通过 apt-get 下载 Debian 软件包,必须更新存储库索引。
当 Debian 软件包部署到本地存储库时,将索引该存储库的相关子路径的事件添加到队列中。
该队列由专门的 Debian 元数据工作者(默认为 8 个,可配置)不断处理。
这意味着,一旦 Debian 软件包被上传,如果队列为空并且有可用的工作人员,它将开始处理事件并索引元数据。
索引通过为包括存储库在内的整个分发路径创建一个锁来工作(debian-local/dists/xenial)。一旦工作人员开始为存储库和分发的特定组合建立索引,当锁存在时,另一个工作人员将不会开始为同一路径的另一个事件建立索引。
10分钟被认为完成索引的时间很长(大约需要1m)。这可能发生在已加载的系统中,或者当许多 Debian 软件包部署到同一分发路径时。

您可以使用以下系统属性调整工作人员的数量artifactory.system.properties

artifactory.debian.metadata.calculation.workers = 8

您还可以通过调用计算 Debian 存储库元数据REST API 方法来强制同步计算整个存储库的元数据。
有关 Artifactory Debian 索引计算调优和调试的更多信息,请参阅以下知识库文章

于 2020-11-12T14:33:10.753 回答