我们有一个内部 yum 服务器,其中包含多个存储库(RHEL 存储库的副本、内部创建的程序等)。我们的内部系统防火墙与互联网隔离,因此它们只能使用我们的内部服务器。
为了在将补丁完全投入生产之前对其进行测试,我们有一个stable
默认启用的存储库。任何更新都会放入-latest
repo 中。当我们修补服务器时,我们将使用该-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)
效果很好。