I ran into a new-to-me yum
error earlier today:
$ yum --quiet check-updates
Error: requested datatype primary not available
Following the tips on Unix & Linux StackExchange: Error: requested datatype primary not available, I:
- ran
yum clean all
- disabled repositories one at a time to identify the repo that was causing the error
In my case, it turned out to be the extras repo. The following did not produce any errors:
$ yum --quiet --disablerepo=extras check-updates
What is wrong with the extras repo? It is defined in /etc/yum.repos.d/CentOS-Base.repo
, so I took a look at what was there:
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
None of that looked unusual (or had changed recently), so back to Google.
I tried excluding the specific mirror that was listed for the extras repo (http://mirrors.unifiedlayer.com/centos/7.4.1708/extras/x86_64/) by adding unifiedlayer.com to the exclude line in /etc/yum/pluginconf.d/fastestmirror.conf
, as described in yum and fastestmirror plugin. Although yum
appeared to pick a different mirror it still gave me the same error.
It turns out, the mirror in question was “poisoned” (rerouted) by my DNS servers, as it had been identified (possibly erroneously) as malicious. As such, the domain still resolved but the path to the CentOS repository did not exist.
I didn’t think that excluding the domain in fastestmirror.conf
was having the intended effect, and yum
was still trying to contact the bad mirror. I took the following steps, which resolved the error, although I can’t say I entirely understand why:
$ sudo yum makecache
This still produced the error.
I removed the bad entry from:
/var/cache/yum/x86_64/7/extras/mirrorlist.txt
Then I ran makecache
again:
$ sudo yum makecache
No error this time! I tried running check-update
:
$ yum check-update
No error!
Shouldn’t yum clean all
have eliminated the bad cache value in /var/cache/yum/x86_64/7/extras/mirrorlist.txt
?
Cache invalidation, one of the hard problems. At least I have steps to take if I run into this problem again.