yum客户端不会看到新的包,虽然服务器更新

我们有一个内部的yum服务器,包含几个回购(RHEL回购的副本,在内部创build的程序等)。 我们的内部系统被互联网挡住了防火墙,所以他们只能使用我们的内部服务器。

为了在将它们全部投入生产之前对补丁进行testing,我们有一个默认启用的stable补丁。 任何更新都将放入-latest回购。 当我们修补服务器时,我们将使用-latest -repo来构build一个新的基线并在几台服务器上进行testing。 一旦经过testing,我们就会使这个基准成为新的stable-latest回购是默认禁用的。

其中一个回收用于从epel,rpmforge等获取的一些包。 我们有一个脚本,只需要我们想要的任何依赖关系的软件包就可以同步。 软件包同步后,每晚使用createrepo重build仓库。 由于这些软件包没有经过testing,所以它们通常都是禁用的int-optional-latest repo。 如果服务器需要该回购软件包,我们将使用enable-repo=int-optional-latest

今天,一位同事试图在服务器上安装perl-Excel-Writer-XLSX。 服务器没有find该软件包。 我尝试使用createrepo重build存储库,并grepped repodata文件,以确保文件在那里。 它是。 我也validation了这个文件存在于版本库中

 repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX 

我也清除了客户端的元数据caching,使用

 sudo yum clean expire-cache 

尽pipe如此,客户仍然声称这个软件包在服务器上不存在。

我不认为这个问题是在服务器端,因为当我尝试从另一台机器search时,发现这个软件包。 我validation了回购文件是正确的,并且名称yum.example.com在两个服务器上parsing为相同的IP地址 – 但其中一个可以find该包,而另一个不能。

我开始深入yum服务器上的web服务器日志,并没有find从客户端找不到任何文件的IP的任何命中。 起初我并不了解这一点,因为我清除了客户端上的caching。 所以我做了另一个caching清理,这次使用

 sudo yum -v clean expire-cache 

当使用-v运行时,它会列出清除哪个回收站,而int-optional-latest不在列表中。 我认为这是由于回购被默认禁用。 我做了另一个caching清理,这次使用

 sudo yum -v enable-repo=int-optional-latest clean expire-cache 

之后,我又试了一次

 sudo yum enable-repo=int-optional-latest install perl-Excel-Writer-XLSX 

这工作完美。