If you have some older CentOS VMs for testing or cross-compiling, you may run into the problem that you can’t install or update the system via “yum” any more:
# yum update
Loaded plugins: fastestmirror, priorities
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: //var/cache/yum/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
So, what’s the problem here?
CentOS have moved all releases that are EOL (=end of life) to a special domain with a slightly different directory layout. For example:
http://mirror.centos.org/centos/5/os/
becomes:
http://vault.centos.org/5.11/os/
As you can see, the point versioning now is present in the path. This is no big deal as the won’t be any further releases for the 5.x-branch, so we’re quite safe in putting the value right into the url.
The outdatet URLs may occur several times in the *.repo-file that are located at /etc/yum.repos.d/, so let’s use a handy one-liner to do the work for us:
find /etc/yum.repos.d/*.repo | xargs -i sed -i 's/mirror\.centos\.org\/centos/vault.centos.org/g;s/$releasever/5.11/g;s/mirrorlist/#mirrorlist/g;s/#baseurl/baseurl/g' {}
This also removes the comment-hash from the “baseurl”-lines and adds hashed to the “mirrorlist”-entries. They will not work on “vault” anyway.
If you have any other release-version, just change the string “5.11” as needed.
Now try to invoke “yum”. It should work now again.