The following are the instructions for upgrading from CentOS 7 to CentOS 8.
First we need to login as sudo
sudo su
Update your system by using YUM:
yum update -y
Double-check you have the epel-release repository installed:
yum install -y epel-release
Install the yum-utils and rpmconf packages:
yum install -y yum-utils rpmconf
Resolve rpm packages and use option ‘N’ to keep the already installed version.
rpmconf -a
Cleanup orphaned packages:
package-cleanup --leaves package-cleanup --orphans
Before switching to CentOS 8 – replace system packages and repositories with CentOS 8 equivalents. We will start by installing the DNF – rpm-based package manager.
yum install -y dnf
Then we’ll remove the YUM manager:
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum
Once done, let’s run a DNF based system update.
dnf upgrade -y
Now we can start installing the packages needed for CentOS 8.
The latest mirror can be found here: http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/
At the time of writing the post, the latest is: CentOS 8.1-1.1911.0.9 from 2020 March 12.
dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/{centos-release-8.1-1.1911.0.9.el8.x86_64.rpm,centos-gpg-keys-8.1-1.1911.0.9.el8.noarch.rpm,centos-repos-8.1-1.1911.0.9.el8.x86_64.rpm}dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/{centos-release-8.1-1.1911.0.8.el8.x86_64.rpm,centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm,centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm}
Then we need to upgrade the EPEL repository:
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Then we can clean up the temp files:
dnf clean all
Now, let’s switch from CentOS 7 to CentOS 8.1. We’ll need to remove the old Linux kernel first. And remove any conflicting packages:
rpm -e `rpm -q kernel`
rpm -e --nodeps sysvinit-tools
Next, start the CentOS 8 upgrade. Note, this will take up to 20 minutes depending on your connection speed, as approximately 840+ packages need to be downloaded, verified, cleaned and installed and some also removed.
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
Once done, you’ll see a screen like this:
Then we’re ready to install the new kernel core, which won’t take more than 20 seconds.
dnf -y install kernel-core
And run the CentOS 8 Minimal install:
dnf -y groupupdate "Core" "Minimal Install"
When done, you’ll see a message that the process was completed:
And Voila!, we have successfully upgraded from CentOS 7 to the latest CentOS 8.1.x release.
The last step is to verify our CentOS’s version:
cat /etc/os-release
cat /etc/redhat-release
Once the upgrade is completed, make sure to open the necessary ports, as these might be disabled after the upgrade to CentOS 8.
For example, if you need to permanently open the port 8080, run
firewall-cmd --zone=public --permanent --add-port 8080/tcp
And reload the firewall:
firewall-cmd --reload
Enjoy!