我们有一个内部yum服务器,其中包含几个存储库(RHEL存储库的副本,内部创建的程序等)。我们的内部系统已从Internet进行防火墙保护,因此它们只能使用我们的内部服务器。
为了在将补丁全面投入生产之前测试补丁,我们stable
默认启用了一个仓库。任何更新都会放入存储-latest
库中。修补服务器时,我们将使用-latest
-repo构建新的基准并在几台服务器上对其进行测试。经过测试后,我们将该基准设为新的基准stable
。该-latest
回购协议默认情况下禁用。
仓库之一用于我们从epel,rpmforge等中获取的一些软件包。我们有一个脚本,该脚本仅将所需的软件包与所需的任何依赖项同步下来。软件包同步后,每晚都会使用createrepo重建仓库。由于这些程序包未经测试,因此最终会出现在int-optional-latest
通常被禁用的存储库中。如果服务器需要该存储库中的软件包,我们将使用安装它enable-repo=int-optional-latest
。
今天,一位同事正在尝试在服务器上安装perl-Excel-Writer-XLSX。服务器找不到包。我尝试使用createrepo重建存储库,并greped repodata文件以确保该文件在那里。它是。我还使用以下方法验证了文件是否存在于存储库中
repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX
我还使用以下方法清除了客户端上的元数据缓存
sudo yum clean expire-cache
尽管如此,客户端仍然声称该软件包在服务器上不存在。
我不认为问题出在服务器端,因为当我尝试从另一台计算机进行搜索时,它找到了软件包。我验证了回购文件是正确的,并且名称yum.example.com
在两台服务器上都解析为相同的IP地址-但是其中一个可以找到该程序包,而另一个则找不到。