Devlog #26

Posted on Tue 22 March 2022 in Devlog

I maintain several CentOS servers on Linode and try to keep them as up-to-date as possible. This morning I went to update one of them but the command failed because it couldn't find a package.

[MIRROR] NetworkManager-1.37.2-1.el8.x86_64.rpm: Status code: 404 for http://mirrors.linode.com/centos/8-stream/BaseOS/x86_64/os/Packages/NetworkManager-1.37.2-1.el8.x86_64.rpm (IP: 2600:3c02:1::42e4:3f76)
    The downloaded packages were saved in cache until the next successful transaction.
    You can remove cached packages by executing 'dnf clean packages'.
    Error: Error downloading packages:
      NetworkManager-1:1.37.2-1.el8.x86_64: Cannot download, all mirrors were already tried without success

I haven't seen this issue before so I started troubleshooting. It appears that my /etc/yum.repos.d/CentOS-Stream-Extras.repo file was configured to look at one single source, which was linode.com. I did open the repo URL listed: http://mirrors.linode.com/centos/8-stream/BaseOS/x86_64/os/Packages/ and sure enough the package it tried to download earlier wasn't there. I checked the central repo at http://mirror.centos.org/centos/8-stream/BaseOS/x86_64/os/Packages/ and it did exist, so I can only guess that Linode hasn't refreshed its repo yet.

Anyway, I wanted to make sure I had the latest updates so I changed /etc/yum.repos.d/CentOS-Stream-Extras.repo to use the mirrorlist instead. Running dnf update then worked. I'm not exactly sure why that file was configured to only consider Linode. It's possible that that is the default image Linode provides. My repo file now looks like this:

# CentOS-Stream-Extras.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client.  You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.

[extras]
name=CentOS Stream $releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$stream&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirrors.linode.com/$contentdir/$stream/extras/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

I did notice that my other repo files also point to Linode instead of the mirror list, but I left those alone for now. At least I know what to do if I see issues like this again in the future.