In this article, you will learn how to upgrade CentOS 7 to CentOS 8.5 release. The steps described herein do not depict the official upgrade and this should not be applied to a production server yet.
Step 1: Install the EPEL Repository
To start off, install the EPL repository by running:
# yum install epel-release -y
Step 2: Install yum-utils Tools
After successfully installing EPEL, install yum-utils by running the command below.
# yum install yum-utils
Thereafter, you need to resolve RPM packages by executing the command.
# yum install rpmconf # rpmconf -a
Next, perform a clean-up of all the packages you don’t require.
# package-cleanup --leaves # package-cleanup --orphans
Step 3: Install the dnf in CentOS 7
Now install the dnf package manager which is the default package manager for CentOS 8.
# yum install dnf
You also need to remove the yum package manager using the command.
# dnf -y remove yum yum-metadata-parser # rm -Rf /etc/yum
Step 4: Upgrading CentOS 7 to CentOS 8
We are now ready to upgrade CentOS 7 to CentOS 8, but before we do so, upgrade the system using the newly install dnf package manager.
# dnf upgrade
Next, install CentOS 8 release package using dnf as shown below. This will take a while.
# dnf install http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm}
Note: CentOS 8 is dead and all the repos have been moved to vault.centos.org.
Next, upgrade the EPEL repository.
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
After successfully upgrading the EPEL repository, remove all the temporary files.
# dnf clean all
Remove the old kernel core for CentOS 7.
# rpm -e `rpm -q kernel`
Next, be sure to remove conflicting packages.
# rpm -e --nodeps sysvinit-tools
Thereafter, launch the CentOS 8 system upgrade as shown.
# dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
Note: If you get errors about conflicting packages, for example in my case there were conflicts about the existing python36-rpmconf package. I removed this package, similarly if you get any conflicts just remove those packages and try running the above upgrade command.
Step 5: Install the New Kernel Core for CentOS 8
To install a new kernel for CentOS 8, run the command.
# dnf -y install kernel-core
Finally, install CentOS 8 minimal package.
# dnf -y groupupdate "Core" "Minimal Install"
Now you can check the version of CentOS installed by running.
# cat /etc/redhat-release
If you see the above output, I have successfully upgraded from CentOS 7 to CentOS 8.5 release.
Read Also: How to Set Up Automatic Updates for CentOS 8
Conclusion
This article concludes on how you can upgrade from CentOS 7 to CentOS 8. We hope you found this insightful.
Hello, I’m stuck in a several problems. Yum didn’t work. Dnf is not installed. All this problems happen before this step
There was a problem importing one of the Python modules required to run yum.
The error leading to this problem was:
Please install a package which provides this module, or verify that the module is installed correctly.
It’s possible that the above module doesn’t match the current version of Python, which is:
If you cannot solve this problem yourself, please go to the yum faq at:
http://yum.baseurl.org/wiki/Faq
Maybe is time to say goodbye to centos………
@Pablo,
The error message you mentioned indicates that there is an issue with the pycurl module in your Python installation, which appears that there is a missing or incompatible symbol related to OpenSSL’s CRYPTO_num_locks function.
Try reinstalling the pycurl (python-pycurl) module to ensure that you have the latest version that is compatible with your updated OpenSSL.
For me, it ends like in the above comment:
I am stuck in this:
Hi Ravi, I am having issues when I try to – Next, install CentOS 8 release package using dnf as shown below. This will take a while.
# dnf install http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm}
CentOS-7 - Base 0.0 B/s | 0 B 00:00
CentOS-7 - Updates 0.0 B/s | 0 B 00:00
CentOS-7 - Extras 0.0 B/s | 0 B 00:00
Failed to synchronize cache for repo 'base', ignoring this repo.
Failed to synchronize cache for repo 'updates', ignoring this repo.
Failed to synchronize cache for repo 'extras', ignoring this repo.
Last metadata expiration check: 0:01:24 ago on Thu 02 Feb 2023 04:42:15 PM UTC.
[MIRROR] centos-linux-repos-8-3.el8.noarch.rpm: Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
[FAILED] centos-linux-repos-8-3.el8.noarch.rpm: Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
Any suggestions/thoughts?
Thanks
Sunil
@Sunil,
Check your system timezone, date, and time, and set the time and date to the current date…
Thanks, Ravi!
Changed the time and time zone. Now I am unable to remove the old kernel and also unable to upgrade the kernel version.
Any help here
Thanks
Sunil
@Sunil,
There could be three reasons for getting a such error:
1. Incorrect date and time settings
2. Old dnf cache expired
3. CentOS baseURL
Fix these issues by:
Hi Ravi, The server is in USA EST, so I set it to EST time.
Still getting the same error –
[root@c~]# dnf install http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm}
CentOS-7 - Base 0.0 B/s | 0 B 00:00
CentOS-7 - Updates 0.0 B/s | 0 B 00:00
CentOS-7 - Extras 0.0 B/s | 0 B 00:00
Failed to synchronize cache for repo 'base', ignoring this repo.
Failed to synchronize cache for repo 'updates', ignoring this repo.
Failed to synchronize cache for repo 'extras', ignoring this repo.
Last metadata expiration check: 22:11:40 ago on Mon 06 Feb 2023 11:54:47 AM EST.
[MIRROR] centos-linux-repos-8-3.el8.noarch.rpm: Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
[FAILED] centos-linux-repos-8-3.el8.noarch.rpm: Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
Curl error (56): Failure when receiving data from the peer for http://vault.centos.org/8.5.2111/BaseOS/x86_64/os/Packages/centos-linux-repos-8-3.el8.noarch.rpm [Recv failure: Connection reset by peer]
@Sunil,
It seems your curl doesn’t support SSL/TLS properly. Try to update or upgrade your system with:
Hi Ravi, Still no luck
Complete!
[root@INDPCS ~]#
@Sunil,
It looks like your repos are empty, I suggest you check the repos in /etc/yum.repos.d/ directory and see the sizes of the base, updates, and extras repository. Also, I suggest your to try to follow the instructions again from the beginning…
Humm…
Be careful, some basic packages will be deleted with those steps of SSH service…
Regards
Hello,
Thanks for the instructions. It did seem easy enough to follow and worked well until:
Google then took me to either irrelevant or highly complex and problematic pages… I’m going to revert my snapshot for maybe another try later.
Uninstall dnf from the centos7 install before starting. Centos7 dnf uses python2, when following the process above the installation of dnf in order should pull a python3 version for you.
I had the same issue and kept trying different things.
The solution I found was to search for the newest repositories from the CentOS 8 Stream and use this when installing the CentOS 8 repos:
After removing the old kernel I needed to remove the old python-pip package since this will conflict with other packages moving forward.
Then I manually installed “NetworkManager” before executing:
Hopefully, this helps.
Hi,
I followed the procedure but at this stage:
I’m getting the error:
My kernel version after running command
uname -r
:Any idea appreciated.
@Cyrus,
To fix this problem you need to boot into rescue mode, then remove the existing linux-firmware package and then manually download and install kernel, kernel-core, and kernel-modules, linux-firmware using rpm -ivh kernel* command.
After that reboot the machine…
@Ravi Saive,
Works with that long sequence. I am somehow able to
rpm -ivh kernel-modules
after removing a lot of packages related to python3 maybe. Able to show and boot into Centos 8. But since I was deep with a lot of packages in CentOs 7, after doing a lot of dnf removal.I ended up missing some crucial utilities after booting into CentOS 8. Ended up just reinstalling a CentOS 8. Was never able to run:
@John,
Sorry for the trouble, but I think you can install those missing utilities with dnf tool after booting into CentOS 8…