百胜仓库缓存

时间:2018-11-26 07:38:25

标签: caching rpm yum nexus3

我想验证Nexus 3上传后,rpm是否可用。

将rpm上传到Nexus 3时,会发生以下事件(查看日志):

Scheduling rebuild of yum metadata to start in 60 seconds
Rebuilding yum metadata for repository rpm
...
Finished rebuilding yum metadata for repository rpm

这需要一段时间。在我的CI管道中,我想定期检查,直到可以安装工件为止。

管道生成rpm,将其上传到Nexus 3,然后每10秒检查rpm是否可用。为了检查rpm的可用性,我正在执行以下命令:

yum clean all && yum --disablerepo="*" --enablerepo="the-repo-I-care-about" list  --showduplicates | grep <name_of_artifcat> | grep <expected_version>

/etc/yum.conf包含:

cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
distroverpkg=centos-release
http_caching=none

/etc/yum.repos.d/repo-i-care-about.repo包含:

[repo-i-care-about]
name=Repo I care about
enabled=1
gpgcheck=0
baseurl=https://somewhere.com
metadata_expire=5
mirrorlist_expire=5
http_caching=none

我遇到的问题是列表响应似乎返回了过时的信息。

元数据重建大约需要70秒(可以配置60秒的初始值,最终我将对其进行调整),并且每10秒检查一次:yum repo的响应看起来缓存在某个地方(有时),以及何时如果我尝试在具有相同repo设置的另一个框上执行相同的搜索,则会发生这种情况,而我得到了预期的工件版本。

在另一台机器上,如果给出了特定的list命令,我在第一次尝试时就获得了预期的结果,而且我每10秒检查一次的机器似乎从未收到预期的结果(即使自人工制品几分钟后) (在其他盒子上可用)使我认为响应已被缓存。

我想避免在发出第一个列表请求之前等待90秒左右(以确保我第一次执行list命令时,伪像很可能已经准备好并且我不缓存结果),尤其是因为元数据调度的初始延迟可能会发生变化(从60秒开始,我们可能会更改为较低的值)。

由于我已将http_caching=none添加到yum.conf和回购定义中,因此此检查的易用性变得更好。但这仍然不能使问题可靠地解决。

为了期望使用list命令获得更可靠的结果,是否应该配置缓存周围的其他设置?现在,我真的不关心list命令要花多长时间,只要它不包含陈旧的信息即可。

1 个答案:

答案 0 :(得分:-1)

看起来像删除/var/cache/yum/*文件夹使检查更加可靠。不过,感觉仍然缺少一些更整洁的方法来实现所需的设置。