尽管服务器已更新,但 yum 客户端没有看到新软件包

Jen*_*y D 16 redhat yum

我们有一个内部 yum 服务器,其中包含多个存储库(RHEL 存储库的副本、内部创建的程序等)。我们的内部系统防火墙与互联网隔离,因此它们只能使用我们的内部服务器。

为了在将补丁完全投入生产之前对其进行测试,我们有一个stable默认启用的存储库。任何更新都会放入-latestrepo 中。当我们修补服务器时,我们将使用该-latest-repo 来构建新的基线并在几台服务器上进行测试。测试后,我们将该基线设为新的stable. 该-latest回购协议默认情况下禁用。

其中一个 repos 用于我们从 epel、rpmforge 等获取的一些包。我们有一个脚本,它只同步我们想要的包以及它们需要的任何依赖项。在包同步后,repo 每晚使用 createrepo 重建。由于这些软件包未经测试,它们最终会出现在int-optional-latest通常被禁用的repo 中。如果服务器需要来自该存储库的软件包,我们将使用enable-repo=int-optional-latest.

今天,一位同事试图在服务器上安装 perl-Excel-Writer-XLSX。服务器没有找到包裹。我尝试使用 createrepo 重建存储库,并搜索 repodata 文件以确保该文件在那里。它是。我还使用以下方法验证了该文件是否存在于存储库中

repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX
Run Code Online (Sandbox Code Playgroud)

我还清除了客户端的元数据缓存,使用

sudo yum clean expire-cache
Run Code Online (Sandbox Code Playgroud)

尽管如此,客户端仍然声称该包在服务器上不存在。

我不认为问题出在服务器端,因为当我尝试从另一台机器进行搜索时,它找到了包。我验证了 repo 文件是正确的,并且名称yum.example.com在两台服务器上解析为相同的 IP 地址 - 但其中一个可以找到包,而另一个不能。

Jen*_*y D 14

我开始深入研究 yum 服务器上的网络服务器日志,但没有从 IP 中找到任何无法找到文件的客户端。起初我不明白这一点,因为我已经清除了客户端上的缓存。所以我做了另一个缓存清理,这次使用

sudo yum -v clean expire-cache
Run Code Online (Sandbox Code Playgroud)

使用 运行时-v,它会列出它清理的存储库 - 并且int-optional-latest不在列表中。我认为这是由于默认情况下禁用了 repo。我做了另一个缓存清除,这次使用

sudo yum -v enable-repo=int-optional-latest clean expire-cache
Run Code Online (Sandbox Code Playgroud)

之后,我尝试了另一个

sudo yum enable-repo=int-optional-latest install perl-Excel-Writer-XLSX
Run Code Online (Sandbox Code Playgroud)

效果很好。