Yum Update on ‘end of life’ CentOS6

Note: Procedure fully tested FEB 2025

Let’s be honest, It’s nearly 2024; you shouldn’t really be using CentOS6 or RHEL 6. However, I fully appreciate you may have inherited an outdated legacy system that is desperate to upgrade.

Any clean, out-of-the-box installation of Cent0S6 or RHEL6 will give you an error. You must take action to fix the problem.

Important: If you are unable to SSH to an RHEL6 or CENTOS6 server follow this procedure.

Example Error

If you ever need to install CentOS 6 or RHEL6, you will not be able to install updates via Yum because it has reached the end of its life.

Bash
yum update -y
##########################
Setting up Upgrade Process
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/x86_64/6/base/mirrorlist.txt
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. 
Please verify its path and try again

However, there is a handy workaround for this.

Step 1 – Create a new repo with your favorite text editor.

I will be using VI.

Bash
vi /etc/yum.repos.d/CentOS-Base.repo

Step 2a – Update the Base Repo

Copy the content below and save the repo file. You can overwrite whats already there if you want, or you can just append it.

Bash
[C6.10-base]
name=CentOS-6.10 - Base
baseurl=http://vault.epel.cloud/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-updates]
name=CentOS-6.10 - Updates
baseurl=http://vault.epel.cloud/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-extras]
name=CentOS-6.10 - Extras
baseurl=http://vault.epel.cloud/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
metadata_expire=never

[C6.10-contrib]
name=CentOS-6.10 - Contrib
baseurl=http://vault.epel.cloud/6.10/contrib/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never

[C6.10-centosplus]
name=CentOS-6.10 - CentOSPlus
baseurl=http://vault.epel.cloud/6.10/centosplus/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=0
metadata_expire=never

Step 2b – Update the Developer Repo for GCC and C++

Create the following repo and add the contents below:

Bash
vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo

Bash
[centos-sclo-rh]
name=CentOS-6 - SCLo rh
baseurl=http://vault.epel.cloud/centos/6/sclo/$basearch/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-rh-testing]
name=CentOS-6 - SCLo rh Testing
baseurl=http://buildlogs.centos.org/centos/6/sclo/$basearch/rh/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-rh-source]
name=CentOS-6 - SCLo rh Sources
baseurl=http://vault.epel.cloud/centos/6/sclo/Source/rh/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-rh-debuginfo]
name=CentOS-6 - SCLo rh Debuginfo
baseurl=http://debuginfo.centos.org/centos/6/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

Next, create another repo and add the contents below:

Bash
vi /etc/yum.repos.d/CentOS-SCLo-scl.repo

Bash
[centos-sclo-sclo]
name=CentOS-6 - SCLo sclo
baseurl=http://vault.epel.cloud/centos/6/sclo/$basearch/sclo/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-testing]
name=CentOS-6 - SCLo sclo Testing
baseurl=http://buildlogs.centos.org/centos/6/sclo/$basearch/sclo/
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-source]
name=CentOS-6 - SCLo sclo Sources
baseurl=http://vault.epel.cloud/centos/6/sclo/Source/sclo/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

[centos-sclo-sclo-debuginfo]
name=CentOS-6 - SCLo sclo Debuginfo
baseurl=http://debuginfo.centos.org/centos/6/sclo/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

Step 3 – Now run the Yum update

Bash
yum update -y

This will update your CentOS 6

Bash
Updated:
  ORBit2.x86_64 0:2.14.17-7.el6
  abrt.x86_64 0:2.0.8-44.el6.centos
  abrt-addon-ccpp.x86_64 0:2.0.8-44.el6.centos
  abrt-addon-kerneloops.x86_64 0:2.0.8-44.el6.centos
  abrt-addon-python.x86_64 0:2.0.8-44.el6.centos
  abrt-cli.x86_64 0:2.0.8-44.el6.centos
  abrt-libs.x86_64 0:2.0.8-44.el6.centos
  abrt-python.x86_64 0:2.0.8-44.el6.centos
  abrt-tui.x86_64 0:2.0.8-44.el6.centos
  acl.x86_64 0:2.2.49-7.el6_9.1
  adcli.x86_64 0:0.8.1-3.el6_10
  autofs.x86_64 1:5.0.5-140.el6_10.1
  bind-libs.x86_64 32:9.8.2-0.68.rc1.el6_10.8
  bind-utils.x86_64 32:9.8.2-0.68.rc1.el6_10.8
  binutils.x86_64 0:2.20.51.0.2-5.48.el6_10.1
  ca-certificates.noarch 0:2020.2.41-65.1.el6_10
  centos-release.x86_64 0:6-10.el6.centos.12.3
  coreutils.x86_64 0:8.4-47.el6
  coreutils-libs.x86_64 0:8.4-47.el6
  crash.x86_64 0:7.1.0-8.el6
  cups.x86_64 1:1.4.2-81.el6_10
  cups-libs.x86_64 1:1.4.2-81.el6_10
  curl.x86_64 0:7.19.7-54.el6_10
  dbus.x86_64 1:1.2.24-11.el6_10
  dbus-libs.x86_64 1:1.2.24-11.el6_10
  device-mapper.x86_64 0:1.02.117-12.el6_9.1
  device-mapper-event.x86_64 0:1.02.117-12.el6_9.1
  device-mapper-event-libs.x86_64 0:1.02.117-12.el6_9.1
  device-mapper-libs.x86_64 0:1.02.117-12.el6_9.1
  device-mapper-persistent-data.x86_64 0:0.6.2-0.2.rc7.el6
  dhclient.x86_64 12:4.1.1-63.P1.el6.centos
  dhcp-common.x86_64 12:4.1.1-63.P1.el6.centos
  dracut.noarch 0:004-411.el6
  dracut-kernel.noarch 0:004-411.el6
  dstat.noarch 0:0.7.0-3.el6_9.1
  e2fsprogs.x86_64 0:1.41.12-24.el6
  e2fsprogs-libs.x86_64 0:1.41.12-24.el6
  freetype.x86_64 0:2.3.11-19.el6_10
  ghostscript.x86_64 0:8.70-24.el6_10.2
  glib2.x86_64 0:2.28.8-10.el6
  glibc.x86_64 0:2.12-1.212.el6_10.3
  glibc-common.x86_64 0:2.12-1.212.el6_10.3
  glibc-devel.x86_64 0:2.12-1.212.el6_10.3
  glibc-headers.x86_64 0:2.12-1.212.el6_10.3
  gmp.x86_64 0:4.3.1-13.el6
  gnupg2.x86_64 0:2.0.14-9.el6_10
  gnutls.x86_64 0:2.12.23-22.el6
  hwdata.noarch 0:0.233-20.1.el6
  initscripts.x86_64 0:9.03.61-1.el6.centos
  iproute.x86_64 0:2.6.32-57.el6
  iptables.x86_64 0:1.4.7-19.el6
  iptables-ipv6.x86_64 0:1.4.7-19.el6
  irqbalance.x86_64 2:1.0.7-9.el6
  jasper-libs.x86_64 0:1.900.1-22.el6
  java-1.7.0-openjdk.x86_64 1:1.7.0.261-2.6.22.1.el6_10
  kernel-firmware.noarch 0:2.6.32-754.35.1.el6
  kernel-headers.x86_64 0:2.6.32-754.35.1.el6
  kexec-tools.x86_64 0:2.0.0-310.el6
  kpartx.x86_64 0:0.4.9-106.el6_10.1
  libX11.x86_64 0:1.6.4-4.el6_10
  libX11-common.noarch 0:1.6.4-4.el6_10
  libacl.x86_64 0:2.2.49-7.el6_9.1
  libbasicobjects.x86_64 0:0.1.1-13.el6
  libblkid.x86_64 0:2.17.2-12.28.el6_9.2
  libcgroup.x86_64 0:0.40.rc1-27.el6_10
  libcollection.x86_64 0:0.6.2-13.el6
  libcom_err.x86_64 0:1.41.12-24.el6
  libcurl.x86_64 0:7.19.7-54.el6_10
  libdhash.x86_64 0:0.4.3-13.el6
  libgcc.x86_64 0:4.4.7-23.el6
  libgfortran.x86_64 0:4.4.7-23.el6
  libgomp.x86_64 0:4.4.7-23.el6
  libgudev1.x86_64 0:147-2.74.el6_10
  libini_config.x86_64 0:1.1.0-13.el6
  libipa_hbac.x86_64 0:1.13.3-60.el6_10.2
  libnih.x86_64 0:1.0.1-8.el6
  libpath_utils.x86_64 0:0.2.1-13.el6
  libref_array.x86_64 0:0.1.4-13.el6
  libreport.x86_64 0:2.0.9-34.el6.centos
  libreport-cli.x86_64 0:2.0.9-34.el6.centos
  libreport-compat.x86_64 0:2.0.9-34.el6.centos
  libreport-filesystem.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-kerneloops.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-logger.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-mailx.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-reportuploader.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-rhtsupport.x86_64 0:2.0.9-34.el6.centos
  libreport-plugin-ureport.x86_64 0:2.0.9-34.el6.centos
  libreport-python.x86_64 0:2.0.9-34.el6.centos
  libss.x86_64 0:1.41.12-24.el6
  libssh2.x86_64 0:1.4.2-3.el6_10.1
  libsss_idmap.x86_64 0:1.13.3-60.el6_10.2
  libstdc++.x86_64 0:4.4.7-23.el6
  libtirpc.x86_64 0:0.2.1-15.el6
  libudev.x86_64 0:147-2.74.el6_10
  libuuid.x86_64 0:2.17.2-12.28.el6_9.2
  libvorbis.x86_64 1:1.2.3-5.el6_9.1
  lvm2.x86_64 0:2.02.143-12.el6_9.1
  lvm2-libs.x86_64 0:2.02.143-12.el6_9.1
  mailx.x86_64 0:12.4-10.el6_10
  man-pages-overrides.noarch 0:6.10.0-1.el6
  microcode_ctl.x86_64 2:1.17-33.31.el6_10
  nfs-utils.x86_64 1:1.2.3-78.el6_10.2
  nspr.x86_64 0:4.21.0-1.el6_10
  nss.x86_64 0:3.44.0-7.el6_10
  nss-softokn.x86_64 0:3.44.0-6.el6_10
  nss-softokn-freebl.x86_64 0:3.44.0-6.el6_10
  nss-sysinit.x86_64 0:3.44.0-7.el6_10
  nss-tools.x86_64 0:3.44.0-7.el6_10
  nss-util.x86_64 0:3.44.0-1.el6_10
  ntp.x86_64 0:4.2.6p5-15.el6.centos
  ntpdate.x86_64 0:4.2.6p5-15.el6.centos
  openssh.x86_64 0:5.3p1-124.el6_10
  openssh-clients.x86_64 0:5.3p1-124.el6_10
  openssh-server.x86_64 0:5.3p1-124.el6_10
  openssl.x86_64 0:1.0.1e-58.el6_10
  patch.x86_64 0:2.6-8.el6_9
  perf.x86_64 0:2.6.32-754.35.1.el6
  polkit.x86_64 0:0.96-11.el6_10.1
  poppler.x86_64 0:0.12.4-12.el6_10.1
  poppler-utils.x86_64 0:0.12.4-12.el6_10.1
  procps.x86_64 0:3.2.8-45.el6_9.3
  python.x86_64 0:2.6.6-68.el6_10
  python-dmidecode.x86_64 0:3.10.15-2.el6
  python-libipa_hbac.x86_64 0:1.13.3-60.el6_10.2
  python-libs.x86_64 0:2.6.6-68.el6_10
  python-paramiko.noarch 0:1.7.5-5.el6_10
  python-setuptools.noarch 0:0.6.10-4.el6_9
  python-sss-murmur.x86_64 0:1.13.3-60.el6_10.2
  python-sssdconfig.noarch 0:1.13.3-60.el6_10.2
  rpcbind.x86_64 0:0.2.0-16.el6
  rpm.x86_64 0:4.8.0-59.el6
  rpm-libs.x86_64 0:4.8.0-59.el6
  rpm-python.x86_64 0:4.8.0-59.el6
  rsyslog.x86_64 0:5.8.10-12.el6
  samba-client.x86_64 0:3.6.23-53.el6_10
  samba-common.x86_64 0:3.6.23-53.el6_10
  samba-winbind.x86_64 0:3.6.23-53.el6_10
  samba-winbind-clients.x86_64 0:3.6.23-53.el6_10
  samba4-libs.x86_64 0:4.2.10-15.el6
  scl-utils.x86_64 0:20120927-29.el6_9
  selinux-policy.noarch 0:3.7.19-312.el6
  selinux-policy-targeted.noarch 0:3.7.19-312.el6
  sg3_utils-libs.x86_64 0:1.28-13.el6
  sos.noarch 0:3.2-63.el6.centos.4
  sssd.x86_64 0:1.13.3-60.el6_10.2
  sssd-ad.x86_64 0:1.13.3-60.el6_10.2
  sssd-client.x86_64 0:1.13.3-60.el6_10.2
  sssd-common.x86_64 0:1.13.3-60.el6_10.2
  sssd-common-pac.x86_64 0:1.13.3-60.el6_10.2
  sssd-ipa.x86_64 0:1.13.3-60.el6_10.2
  sssd-krb5.x86_64 0:1.13.3-60.el6_10.2
  sssd-krb5-common.x86_64 0:1.13.3-60.el6_10.2
  sssd-ldap.x86_64 0:1.13.3-60.el6_10.2
  sssd-proxy.x86_64 0:1.13.3-60.el6_10.2
  sudo.x86_64 0:1.8.6p3-29.el6_10.3
  sysstat.x86_64 0:9.0.4-33.el6_9.1
  systemtap-runtime.x86_64 0:2.9-9.el6
  tzdata.noarch 0:2020d-1.el6
  tzdata-java.noarch 0:2020d-1.el6
  udev.x86_64 0:147-2.74.el6_10
  upstart.x86_64 0:0.6.5-17.el6
  util-linux-ng.x86_64 0:2.17.2-12.28.el6_9.2
  vim-common.x86_64 2:7.4.629-5.el6_10.2
  vim-enhanced.x86_64 2:7.4.629-5.el6_10.2
  vim-filesystem.x86_64 2:7.4.629-5.el6_10.2
  vim-minimal.x86_64 2:7.4.629-5.el6_10.2
  xorg-x11-drv-ati-firmware.noarch 0:7.6.1-4.el6
  yum.noarch 0:3.2.29-81.el6.centos.0.1
  yum-plugin-fastestmirror.noarch 0:1.1.30-42.el6_10
  yum-plugin-security.noarch 0:1.1.30-42.el6_10
  yum-utils.noarch 0:1.1.30-42.el6_10

Thats it, you now have an updated CentOS or RHEL6 system.

CentOS 6/RHEL 6 Upgrade Survival Guide: Q&A

Let’s be real, it’s 2025. Stuck with CentOS 6 or RHEL 6? You’re not alone! Many inherited legacy systems need a lifeline. A fresh CentOS 6/RHEL 6 install throws errors because it’s reached its end-of-life. This guide provides a tested (Feb 2025) workaround to get those updates rolling again.

Q: Why am I getting “YumRepo Error” and “Cannot retrieve repository metadata” when trying to update CentOS 6/RHEL 6?

A: CentOS 6 and RHEL 6 have reached their end-of-life. The default repositories are no longer active, causing these errors. You need to point your system to archived repositories.

Q: Is it safe to update a system that’s so old?

A: While this guide allows you to install updates, it’s crucial to understand the risks. Running an outdated OS poses security vulnerabilities. This process is a temporary solution, ideally used to facilitate migration to a newer, supported system. Upgrading to a modern OS is highly recommended.

Q: What are the key steps to fix the Yum update issue?

A: The process involves:

  1. Creating new repository files (CentOS-Base.repo, CentOS-SCLo-scl-rh.repo, and CentOS-SCLo-scl.repo).
  2. Populating these files with URLs pointing to archived CentOS 6 repositories.
  3. Running yum update -y.

Q: What are these repository files I’m creating?

Elsewhere On TurboGeek:  How to Download and Install Ubuntu OS for Free: A Comprehensive Guide

A: These files tell your system where to find the software packages it needs for updates. The default repos are gone, so we’re creating new ones pointing to archived versions.

Q: What is the significance of the different repository sections (e.g., [C6.10-base], [C6.10-updates])?

A: These sections define different categories of packages (base OS, updates, extras, etc.). Separating them helps organize the repository information.

Q: Why are there two sets of SCLo repositories (rh and sclo)?

A: SCLo (Software Collections) allows you to install newer versions of software alongside the older system libraries. The “rh” repos are for Red Hat provided collections and “sclo” are for community collections. They are needed for gcc and c++ updates.

Q: What is gpgcheck=1 and gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 in the repo files?

A: These lines ensure the downloaded packages are authentic and haven’t been tampered with. GPG (GNU Privacy Guard) keys are used to verify the digital signatures of the packages.

Q: What does metadata_expire=never mean?

A: This setting prevents Yum from checking for updated repository metadata, which is useful since these are archived repos and won’t change.

Q: I’m not comfortable using vi. Can I use another text editor?

A: Absolutely! You can use any text editor you prefer (e.g., nano, emacs). Just replace vi with your editor of choice in the commands.

Q: After running yum update -y, I see a massive list of updated packages. Is this normal?

A: Yes, this is expected. It shows all the packages that were updated to their latest available versions within the CentOS 6 lifecycle.

Q: What should I do after updating CentOS 6/RHEL 6?

A: The most important step is to plan your migration to a supported operating system. CentOS 6/RHEL 6 are no longer receiving security updates, making your system vulnerable. This update process is a temporary measure to give you time to migrate.

Q: I have a specific question not answered here. Where can I get help?

A: Feel free to leave a comment below! I’ll do my best to assist you. Please provide as much detail as possible about your issue.

Remember: This guide is a patch, not a permanent solution. Prioritize upgrading to a supported OS for long-term security and stability.

Thanks for taking the time to read this article. if you have any questions or feedback, please write in the comment section below.

Richard.Bailey

Richard Bailey, a seasoned tech enthusiast, combines a passion for innovation with a knack for simplifying complex concepts. With over a decade in the industry, he's pioneered transformative solutions, blending creativity with technical prowess. An avid writer, Richard's articles resonate with readers, offering insightful perspectives that bridge the gap between technology and everyday life. His commitment to excellence and tireless pursuit of knowledge continues to inspire and shape the tech landscape.

You may also like...

11 Responses

  1. Andrea Arrighetti says:

    Thank you very much. It works!

  2. Mohammad Arfaq says:

    After 3 hours of searching for solution, finally i got the answer. thank you so so so much

  3. Suman Kodam says:

    Thank you………. Its Working

  4. Amit says:

    After 6 hours of searching for solution, finally i got the answer. thank you so so so much

  5. Evan says:

    Is there a new solution? I think this stopped working in July 2024. many thanks

    • oh no! let me check and get back to you. I really hope they havent broken it again. Thanks for the heads up

      • Everything looks ok. I have just successfully updated a CentOS 6.9 x64 vanilla installation.

        Updating : 1:libvorbis-1.2.3-5.el6_9.1.x86_64 168/346
        Updating : libgfortran-4.4.7-23.el6.x86_64 169/346
        Updating : sg3_utils-libs-1.28-13.el6.x86_64 170/346
        Updating : scl-utils-20120927-29.el6_9.x86_64 171/346
        Updating : patch-2.6-8.el6_9.x86_64 172/346
        Updating : xorg-x11-drv-ati-firmware-7.6.1-4.el6.noarch 173/346

  6. Angie says:

    This is amazing and I’m hoping I can get it to work. I’ve followed the instructions above, but I’m seeing the following error…

    [root@#### ####]# yum update -y
    Loaded plugins: fastestmirror, refresh-packagekit, security
    Setting up Update Process
    Loading mirror speeds from cached hostfile
    https://buildlogs.centos.org/centos/6/upg/%24basesearch/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 – “The requested URL returned error: 404 Not Found”
    Trying other mirror.
    To address this issue please refer to the below wiki article

    https://wiki.centos.org/yum-errors

    If above article doesn’t help to resolve this issue please use https://bugs.centos.org/.

    Error: Cannot retrieve repository metadata (repomd.xml) for repository: centos-upgrade. Please verify its path and try again”

    Do you happen to know how to resolve this issue? I’ve gone to the https://buildlogs.centos.org/centos/6/upg/ site and I see the content is there, but I’m not sure how to resolve.

    Thank you, Angie

  1. 07/03/2023

    […] If you have any issues updating yum due to CentOS/RHEL6 going to end of life follow this procedure to fix the problem. […]

Leave a Reply

Your email address will not be published. Required fields are marked *

Translate »