yum client doesn't see new packages though server is updated
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 stable
. The -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 enable-repo=int-optional-latest
.
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.
I started digging into the webserver logs on the yum server, and didn't find any hits from the IP for the client that couldn't find the files. I didn't understand this at first, since I'd cleared out the cache on the clients. So I did another cache cleanout, this time using
sudo yum -v clean expire-cache
When run with -v
, it lists which repos it cleans - and the int-optional-latest
wasn't in the list. I figure this was due to the repo being disabled by default. I did another cache-clearing, this time using
sudo yum -v enable-repo=int-optional-latest clean expire-cache
After that, I tried another
sudo yum enable-repo=int-optional-latest install perl-Excel-Writer-XLSX
which worked perfectly.
sudo yum -v clean expire-cache
didn't work for me. However, I was able to get it working with
sudo touch /etc/yum.repos.d/<your_repo_file>
and
yum repolist
shows it is updated. Hope this helps.