We have an internal yum server containing several repos (copies of the RHEL repo, programs created in-house, and so on). Our internal systems are firewalled off from the internet, so they can only use our internal server.
In order to test patches out before pushing them all the way into production, we have a
stable repo that is enabled by default. Any updates get put in the
-latest repo. When we patch servers, we'll use that
-latest-repo to build a new baseline and test it out on a few servers. Once tested, we make that baseline the new
-latest repos are disabled by default.
One of the repos is used for a few packages that we fetch from epel, rpmforge and so on. We have a script that syncs down only the packages we want with any dependencies they need. The repo is rebuilt nightly with createrepo after the packages are synced. Since these packages are untested, they end up in the
int-optional-latest repo which is usually disabled. If a server needs a package from that repo, we'll install it using
Today a coworker was trying to install perl-Excel-Writer-XLSX on a server. The server didn't find the package. I tried rebuilding the repository using createrepo, and grepped the repodata files to make sure the file was there. It was. I also verified that the file existed within the repository using
repoquery -q --repoid=int-optional-latest -l perl-Excel-Writer-XLSX
I also cleared out the metadata cache on the client side, using
sudo yum clean expire-cache
Despite this, the client kept claiming that the package didn't exist on the server.
I don't think the problem is on the server side, because when I tried doing a search from another machine, it found the package. I verified that the repo files were correct and that the name
yum.example.com resolved to the same IP address on both servers - yet one of them can find the package, and the other one can't.