~~NOTOC~~
===== q103: Switching mirrors on CentOS 7.9 =====
==== Symptom ====
On CentOS 7.9, when you run a command to install dependency packages (e.g. installing NVIDIA driver dependencies), if you see an error like this one, saying it can't reach ''mirrorlist.centos.org'':
[lxkt@localhost ~]$ sudo yum install -y gcc kernel-devel-$(uname -r) kernel-headers-$(uname -r)
Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Run the command with the repository temporarily disabled
yum --disablerepo= ...
4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:
yum-config-manager --disable
or
subscription-manager repos --disable=
5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=.skip_if_unavailable=true
Cannot find a valid baseurl for repo: base/7/x86_64
(You don't need to read this whole block carefully — as long as you see the keyword ''mirrorlist.centos.org'' or "Cannot find a valid baseurl", you can be fairly confident this is the issue described here. In the example above, the ''lxkt'' in ''[lxkt@localhost ~]$'' is just this example machine's username and has nothing to do with the cause of the error — the username on your own machine may well be different, and that's completely normal.)
==== Cause ====
> CentOS 7's official repositories are no longer maintained, so the mirrors are no longer available.
==== Fix ====
Run the following commands in order (we recommend copying and pasting the whole block from start to finish, including the entire ''sudo tee ... EOF'' block — don't split it up and run it in pieces):
sudo mkdir /etc/yum.repos.d/bak
sudo mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/bak/
sudo tee /etc/yum.repos.d/CentOS-Base.repo > /dev/null <<'EOF'
[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
enabled=1
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
enabled=1
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7
enabled=1
EOF
Once this finishes (with no error, there won't be much output), run the ''yum install'' command that failed earlier again — it should succeed normally now.
~~DISCUSSION:off~~