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=<repoid> ... 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 <repoid> or subscription-manager repos --disable=<repoid> 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=<repoid>.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.
