我们有一个内部 yum 服务器,其中包含多个存储库(RHEL 存储库的副本、内部创建的程序等)。我们的内部系统与互联网隔离,因此它们只能使用我们的内部服务器。
为了在将补丁全部推送到生产环境之前对其进行测试,我们有一个stable
默认启用的存储库。任何更新都会放在-latest
回购中。当我们修补服务器时,我们将使用该-latest
-repo 来构建一个新的基线并在一些服务器上对其进行测试。测试后,我们将该基线设为新的stable
. 默认情况下-latest
禁用存储库。
其中一个存储库用于我们从 epel、rpmforge 等获取的一些包。我们有一个脚本,它只同步我们想要的包和他们需要的任何依赖项。包同步后,每晚使用 createrepo 重建 repo。由于这些软件包未经测试,它们最终会出现在int-optional-latest
通常被禁用的 repo 中。如果服务器需要来自该 repo 的包,我们将使用enable-repo=int-optional-latest
.
今天一位同事试图在服务器上安装 perl-Excel-Writer-XLSX。服务器没有找到包裹。我尝试使用 createrepo 重建存储库,并对 repodata 文件进行 grep 以确保该文件存在。它是。我还使用以下方法验证了该文件是否存在于存储库中
repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX
我还清除了客户端的元数据缓存,使用
sudo yum clean expire-cache
尽管如此,客户端仍然声称该软件包在服务器上不存在。
我不认为问题出在服务器端,因为当我尝试从另一台机器进行搜索时,它找到了包。我验证了 repo 文件是正确的,并且名称yum.example.com
在两台服务器上解析为相同的 IP 地址 - 但其中一台可以找到包,而另一台则不能。
我开始深入研究 yum 服务器上的网络服务器日志,并没有从 IP 中找到任何无法找到文件的客户端的命中。起初我不明白这一点,因为我已经清除了客户端上的缓存。所以我又做了一次缓存清理,这次使用
当使用 运行时
-v
,它会列出它清理的存储库 - 并且int-optional-latest
不在列表中。我认为这是由于默认情况下禁用了 repo。我做了另一个缓存清除,这次使用之后,我尝试了另一个
效果很好。
对我不起作用。但是,我能够让它与
和
显示它已更新。希望这可以帮助。