Table of Contents
In this article, I will take you through the Upgrade to CentOS 8 from CentOS 7 using 20 Easy Steps. CentOS 8 was officially released on September 24th, 2019. As you might already know that CentOS is community based operating system in line with Red Hat Based Projects. Since the release of CentOS 8 many Organizations are planning to use the latest OS.
In continuation to that it is very important for you to update yourself with the clear steps to upgrade CentOS 7 Systems to latest CentOS 8 version.
Upgrade CentOS 7 to CentOS 8
Also Read: 14 Useful APT CACHE Examples on Ubuntu 18.04
Step 1: Check OS Version
First check the current OS version from /etc/redhat-release
file. As you can see current OS version is 7.7.1908.
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
You can also use uname -r
command to check the Kernel version.
[root@localhost ~]# uname -r 3.10.0-1062.9.1.el7.x86_64
Step 2: Install EPEL Package
Now you are going to need few packages from EPEL yum Repository so you need to install EPEL(Extra Package for Enterprise Linux) package for that and enable it using yum -y install epel-release
command as shown below.
[root@localhost ~]# yum -y install epel-release --> Running transaction check ---> Package epel-release.noarch 0:7-11 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: epel-release noarch 7-11 extras 15 k Transaction Summary ======================================================================================================================================================================== Install 1 Package Total download size: 15 k Installed size: 24 k Downloading packages:
Step 3: Install rpmconf and yum-utils Packages
After installing EPEL package, it is now time to install few other packages like rpmconf
and yum-utils
which is required for the upgradation using yum -y install rpmconf yum-utils
command as shown below.
[root@localhost ~]# yum -y install rpmconf yum-utils epel | 5.3 kB 00:00:00 (1/3): epel/x86_64/group_gz | 95 kB 00:00:00 (2/3): epel/x86_64/primary_db | 6.7 MB 00:00:03 (3/3): epel/x86_64/updateinfo | 1.0 MB 00:00:57 Resolving Dependencies --> Running transaction check ---> Package rpmconf.noarch 0:0.3.4-1.el7 will be installed ---> Package yum-utils.noarch 0:1.1.31-52.el7 will be installed --> Processing Dependency: python-kitchen for package: yum-utils-1.1.31-52.el7.noarch --> Processing Dependency: libxml2-python for package: yum-utils-1.1.31-52.el7.noarch --> Running transaction check ---> Package libxml2-python.x86_64 0:2.9.1-6.el7_2.3 will be installed ---> Package python-kitchen.noarch 0:1.1.1-5.el7 will be installed --> Processing Dependency: python-chardet for package: python-kitchen-1.1.1-5.el7.noarch --> Running transaction check ---> Package python-chardet.noarch 0:2.2.1-3.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: rpmconf noarch 0.3.4-1.el7 epel 21 k yum-utils noarch 1.1.31-52.el7 base 121 k Installing for dependencies: libxml2-python x86_64 2.9.1-6.el7_2.3 base 247 k python-chardet noarch 2.2.1-3.el7 base 227 k python-kitchen noarch 1.1.1-5.el7 base 267 k Transaction Summary ======================================================================================================================================================================== Install 2 Packages (+3 Dependent packages) Total download size: 883 k Installed size: 4.3 M Downloading packages: (1/5): python-chardet-2.2.1-3.el7.noarch.rpm | 227 kB 00:00:00 (2/5): libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm | 247 kB 00:00:00 (3/5): python-kitchen-1.1.1-5.el7.noarch.rpm | 267 kB 00:00:00 (4/5): yum-utils-1.1.31-52.el7.noarch.rpm | 121 kB 00:00:00 warning: /var/cache/yum/x86_64/7/epel/packages/rpmconf-0.3.4-1.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY Public key for rpmconf-0.3.4-1.el7.noarch.rpm is not installed (5/5): rpmconf-0.3.4-1.el7.noarch.rpm | 21 kB 00:00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 1.1 MB/s | 883 kB 00:00:00 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-11.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : python-chardet-2.2.1-3.el7.noarch 1/5 Installing : python-kitchen-1.1.1-5.el7.noarch 2/5 Installing : libxml2-python-2.9.1-6.el7_2.3.x86_64 3/5 Installing : yum-utils-1.1.31-52.el7.noarch 4/5 Installing : rpmconf-0.3.4-1.el7.noarch 5/5 Verifying : python-kitchen-1.1.1-5.el7.noarch 1/5 Verifying : rpmconf-0.3.4-1.el7.noarch 2/5 Verifying : yum-utils-1.1.31-52.el7.noarch 3/5 Verifying : libxml2-python-2.9.1-6.el7_2.3.x86_64 4/5 Verifying : python-chardet-2.2.1-3.el7.noarch 5/5 Installed: rpmconf.noarch 0:0.3.4-1.el7 yum-utils.noarch 0:1.1.31-52.el7 Dependency Installed: libxml2-python.x86_64 0:2.9.1-6.el7_2.3 python-chardet.noarch 0:2.2.1-3.el7 python-kitchen.noarch 0:1.1.1-5.el7 Complete!
Step 4: Remove Conflicting Configuration
After successful installation of all the required packages, you can find and remove all the conflicting configuration files by using rpmconf -a
command as shown below.
[root@localhost ~]# rpmconf -a
Step 5: Cleanup Packages
Now you can find out all the rpm packages that are not relied upon by any other rpm packages in the system using package-cleanup --leaves
command.
[root@localhost ~]# package-cleanup --leaves Loaded plugins: fastestmirror libsysfs-2.1.0-16.el7.x86_64
Now you can list out all installed rpm packages which are not available from currently configured repositories using package-cleanup --orphans
command. You can check more options of package-cleanup
command from Package-Cleanup Man Page.
[root@localhost ~]# package-cleanup --orphans Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.piconets.webwerks.in * epel: mirrors.piconets.webwerks.in * extras: mirrors.piconets.webwerks.in * updates: mirrors.piconets.webwerks.in chefdk-4.6.35-1.el7.x86_64
Step 6: Manually remove all unnecessary packages
You can remove all the unnecessary packages which are now not required using below yum
command.
[root@localhost ~]# yum remove -y libsysfs-2.1.0-16.el7.x86_64 chefdk-4.6.35-1.el7.x86_64
Step 7: Install dnf
It is now time to install dnf tool using yum -y install dnf
command using which we will upgrade the current CentOS version to CentOS 8. We do not need yum command now for the upgradation.
[root@localhost ~]# yum -y install dnf Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.piconets.webwerks.in * epel: mirrors.piconets.webwerks.in * extras: mirrors.piconets.webwerks.in * updates: mirrors.piconets.webwerks.in Resolving Dependencies --> Running transaction check ---> Package dnf.noarch 0:4.0.9.2-1.el7_6 will be installed --> Processing Dependency: python2-dnf = 4.0.9.2-1.el7_6 for package: dnf-4.0.9.2-1.el7_6.noarch --> Running transaction check ---> Package python2-dnf.noarch 0:4.0.9.2-1.el7_6 will be installed --> Processing Dependency: dnf-data = 4.0.9.2-1.el7_6 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: python2-libdnf >= 0.22.5 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: python2-libcomps >= 0.1.8 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: python2-hawkey >= 0.22.5 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: libmodulemd >= 1.4.0 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: python2-libdnf for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: python-enum34 for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Processing Dependency: deltarpm for package: python2-dnf-4.0.9.2-1.el7_6.noarch --> Running transaction check ---> Package deltarpm.x86_64 0:3.6-3.el7 will be installed ---> Package dnf-data.noarch 0:4.0.9.2-1.el7_6 will be installed --> Processing Dependency: libreport-filesystem for package: dnf-data-4.0.9.2-1.el7_6.noarch ---> Package libmodulemd.x86_64 0:1.6.3-1.el7 will be installed ---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed ---> Package python2-hawkey.x86_64 0:0.22.5-1.el7_6 will be installed --> Processing Dependency: libdnf(x86-64) = 0.22.5-1.el7_6 for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: libsolvext.so.0(SOLV_1.0)(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: libsolv.so.0(SOLV_1.0)(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: libsolvext.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: libsolv.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: librepo.so.0()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 --> Processing Dependency: libdnf.so.2()(64bit) for package: python2-hawkey-0.22.5-1.el7_6.x86_64 ---> Package python2-libcomps.x86_64 0:0.1.8-13.el7 will be installed --> Processing Dependency: libcomps(x86-64) = 0.1.8-13.el7 for package: python2-libcomps-0.1.8-13.el7.x86_64 --> Processing Dependency: libcomps.so.0.1.6()(64bit) for package: python2-libcomps-0.1.8-13.el7.x86_64 ---> Package python2-libdnf.x86_64 0:0.22.5-1.el7_6 will be installed --> Running transaction check ---> Package libcomps.x86_64 0:0.1.8-13.el7 will be installed ---> Package libdnf.x86_64 0:0.22.5-1.el7_6 will be installed ---> Package librepo.x86_64 0:1.8.1-7.el7 will be installed ---> Package libreport-filesystem.x86_64 0:2.1.11-43.el7.centos will be installed ---> Package libsolv.x86_64 0:0.6.34-4.el7 will be installed
Step 8: Build DNF Cache
You can build cache for yum repository using dnf makecache
command as shown below.
[root@localhost ~]# dnf makecache CentOS-7 - AppStream 4.6 kB/s | 4.3 kB 00:00 CentOS-7 - Base 5.1 kB/s | 3.8 kB 00:00 CentOS-7 - Extras 3.6 kB/s | 1.5 kB 00:00 Extra Packages for Enterprise Linux Modular 7 - x86_64 7.4 kB/s | 9.6 kB 00:01 Extra Packages for Enterprise Linux 7 - x86_64 8.9 kB/s | 8.2 kB 00:00 Google Cloud SDK 198 B/s | 454 B 00:02 Metadata cache created.
Step 9: Remove metadata-parser package
Once dnf package Manager is installed, we can use it remove yum
and yum-metadata-parser
package which are now not required in the System using dnf -y remove yum yum-metadata-parser
command as shown below.
[root@localhost ~]# dnf -y remove yum yum-metadata-parser Dependencies resolved. ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Removing: yum noarch 3.4.3-163.el7.centos @System 5.6 M yum-metadata-parser x86_64 1.1.4-10.el7 @System 57 k Removing dependent packages: yum-plugin-fastestmirror noarch 1.1.31-52.el7 @System 53 k yum-utils noarch 1.1.31-52.el7 @System 337 k Transaction Summary ======================================================================================================================================================================== Remove 4 Packages Freed space: 6.0 M Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : yum-utils-1.1.31-52.el7.noarch 1/4 Erasing : yum-plugin-fastestmirror-1.1.31-52.el7.noarch 2/4 Erasing : yum-3.4.3-163.el7.centos.noarch 3/4 Erasing : yum-metadata-parser-1.1.4-10.el7.x86_64 4/4 Verifying : yum-3.4.3-163.el7.centos.noarch 1/4 Verifying : yum-metadata-parser-1.1.4-10.el7.x86_64 2/4 Verifying : yum-plugin-fastestmirror-1.1.31-52.el7.noarch 3/4 Verifying : yum-utils-1.1.31-52.el7.noarch 4/4 Removed: yum-3.4.3-163.el7.centos.noarch yum-metadata-parser-1.1.4-10.el7.x86_64 yum-plugin-fastestmirror-1.1.31-52.el7.noarch yum-utils-1.1.31-52.el7.noarch Complete!
Remove left over yum files using rm -Rf /etc/yum
command.
[root@localhost ~]# rm -Rf /etc/yum
Step 10: Upgrade using dnf
Once all the cleanup is done, it is now time to upgrade all CentOS 7 packages using dnf -y upgrade
command as shown below.
[root@localhost ~]# dnf -y upgrade Extra Packages for Enterprise Linux 7 - x86_64 4.1 MB/s | 16 MB 00:03 CentOS-7 - Base 3.6 MB/s | 10 MB 00:02 CentOS-7 - Updates 4.6 MB/s | 9.4 MB 00:02 Google Cloud SDK 0.0 B/s | 0 B 00:00 Google Cloud SDK 0.0 B/s | 0 B 00:00 Importing GPG key 0xA7317B0F: Userid : "Google Cloud Packages Automatic Signing Key <gc-team@google.com>" Fingerprint: D0BC 747F D8CA F711 7500 D6FA 3746 C208 A731 7B0F From : https://packages.cloud.google.com/yum/doc/yum-key.gpg Importing GPG key 0xBA07F4FB: Userid : "Google Cloud Packages Automatic Signing Key <gc-team@google.com>" Fingerprint: 54A6 47F9 048D 5688 D7DA 2ABE 6A03 0B21 BA07 F4FB From : https://packages.cloud.google.com/yum/doc/yum-key.gpg Google Cloud SDK 0.0 B/s | 0 B 00:00 Importing GPG key 0x3E1BA8D5: Userid : "Google Cloud Packages RPM Signing Key <gc-team@google.com>" Fingerprint: 3749 E1BA 95A8 6CE0 5454 6ED2 F09C 394C 3E1B A8D5 From : https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg Google Cloud SDK 4.5 MB/s | 33 MB 00:07 CentOS-7 - Extras 903 kB/s | 258 kB 00:00 Last metadata expiration check: 0:00:01 ago on Mon 23 Mar 2020 06:29:36 AM EDT. Dependencies resolved. ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: kernel x86_64 3.10.0-1062.18.1.el7 updates 50 M Upgrading: epel-release noarch 7-12 epel 15 k NetworkManager x86_64 1:1.18.0-5.el7_7.2 updates 1.9 M NetworkManager-libnm x86_64 1:1.18.0-5.el7_7.2 updates 1.7 M NetworkManager-team x86_64 1:1.18.0-5.el7_7.2 updates 163 k NetworkManager-tui x86_64 1:1.18.0-5.el7_7.2 updates 327 k binutils x86_64 2.27-41.base.el7_7.3 updates 5.9 M ca-certificates noarch 2019.2.32-76.el7_7 updates 399 k curl x86_64 7.29.0-54.el7_7.2 updates 270 k firewalld noarch 0.6.3-2.el7_7.4 updates 441 k firewalld-filesystem noarch 0.6.3-2.el7_7.4 updates 50 k git x86_64 1.8.3.1-21.el7_7 updates 4.4 M iproute x86_64 4.11.0-25.el7_7.2 updates 803 k iprutils x86_64 2.4.17.1-3.el7_7 updates 243 k java-11-openjdk x86_64 1:11.0.6.10-1.el7_7 updates 213 k java-11-openjdk-devel x86_64 1:11.0.6.10-1.el7_7 updates 3.3 M java-11-openjdk-headless x86_64 1:11.0.6.10-1.el7_7 updates 39 M kernel-tools x86_64 3.10.0-1062.18.1.el7 updates 7.9 M kernel-tools-libs x86_64 3.10.0-1062.18.1.el7 updates 7.8 M kmod x86_64 20-25.el7_7.1 updates 122 k kmod-libs x86_64 20-25.el7_7.1 updates 51 k libblkid x86_64 2.23.2-61.el7_7.1 updates 181 k libcurl x86_64 7.29.0-54.el7_7.2 updates 223 k libmount x86_64 2.23.2-61.el7_7.1 updates 183 k libsmartcols x86_64 2.23.2-61.el7_7.1 updates 141 k libuuid x86_64 2.23.2-61.el7_7.1 updates 83 k microcode_ctl x86_64 2:2.1-53.7.el7_7 updates 2.5 M nss x86_64 3.44.0-7.el7_7 updates 854 k nss-softokn x86_64 3.44.0-8.el7_7 updates 330 k nss-softokn-freebl x86_64 3.44.0-8.el7_7 updates 224 k nss-sysinit x86_64 3.44.0-7.el7_7 updates 65 k nss-tools x86_64 3.44.0-7.el7_7 updates 528 k Removing: kernel x86_64 3.10.0-1062.el7 @System 64 M kernel x86_64 3.10.0-1062.1.1.el7 @System 64 M Transaction Summary ======================================================================================================================================================================== Install 1 Package Upgrade 52 Packages Remove 2 Packages Total download size: 230 M Downloading Packages: (1/53): epel-release-7-12.noarch.rpm 157 kB/s | 15 kB 00:00 (2/53): NetworkManager-libnm-1.18.0-5.el7_7.2.x86_64.rpm 1.9 MB/s | 1.7 MB 00:00 (3/53): NetworkManager-team-1.18.0-5.el7_7.2.x86_64.rpm 1.3 MB/s | 163 kB 00:00 (4/53): NetworkManager-tui-1.18.0-5.el7_7.2.x86_64.rpm 1.5 MB/s | 327 kB 00:00 (5/53): NetworkManager-1.18.0-5.el7_7.2.x86_64.rpm 1.3 MB/s | 1.9 MB 00:01 (6/53): ca-certificates-2019.2.32-76.el7_7.noarch.rpm 955 kB/s | 399 kB 00:00 (7/53): curl-7.29.0-54.el7_7.2.x86_64.rpm 980 kB/s | 270 kB 00:00 (8/53): firewalld-0.6.3-2.el7_7.4.noarch.rpm 1.1 MB/s | 441 kB 00:00 (9/53): firewalld-filesystem-0.6.3-2.el7_7.4.noarch.rpm 644 kB/s | 50 kB 00:00 (10/53): binutils-2.27-41.base.el7_7.3.x86_64.rpm 2.2 MB/s | 5.9 MB 00:02 (11/53): iproute-4.11.0-25.el7_7.2.x86_64.rpm 2.0 MB/s | 803 kB 00:00 (12/53): iprutils-2.4.17.1-3.el7_7.x86_64.rpm 1.5 MB/s | 243 kB 00:00 (13/53): java-11-openjdk-11.0.6.10-1.el7_7.x86_64.rpm 1.2 MB/s | 213 kB 00:00 (14/53): git-1.8.3.1-21.el7_7.x86_64.rpm 1.3 MB/s | 4.4 MB 00:03 (15/53): java-11-openjdk-devel-11.0.6.10-1.el7_7.x86_64.rpm 2.2 MB/s | 3.3 MB 00:01 (16/53): kernel-tools-3.10.0-1062.18.1.el7.x86_64.rpm 2.1 MB/s | 7.9 MB 00:03 (17/53): kernel-tools-libs-3.10.0-1062.18.1.el7.x86_64.rpm 2.1 MB/s | 7.8 MB 00:03 (18/53): kmod-20-25.el7_7.1.x86_64.rpm 1.7 MB/s | 122 kB 00:00 (19/53): kmod-libs-20-25.el7_7.1.x86_64.rpm 812 kB/s | 51 kB 00:00 (20/53): libblkid-2.23.2-61.el7_7.1.x86_64.rpm 1.6 MB/s | 181 kB 00:00 (21/53): libcurl-7.29.0-54.el7_7.2.x86_64.rpm 2.0 MB/s | 223 kB 00:00 (22/53): libmount-2.23.2-61.el7_7.1.x86_64.rpm 1.3 MB/s | 183 kB 00:00 (23/53): libsmartcols-2.23.2-61.el7_7.1.x86_64.rpm 1.4 MB/s | 141 kB 00:00 (24/53): libuuid-2.23.2-61.el7_7.1.x86_64.rpm 1.0 MB/s | 83 kB 00:00 (25/53): microcode_ctl-2.1-53.7.el7_7.x86_64.rpm 2.7 MB/s | 2.5 MB 00:00 (26/53): nss-3.44.0-7.el7_7.x86_64.rpm 3.0 MB/s | 854 kB 00:00 (27/53): nss-softokn-3.44.0-8.el7_7.x86_64.rpm 1.9 MB/s | 330 kB 00:00 (28/53): nss-softokn-freebl-3.44.0-8.el7_7.x86_64.rpm 2.1 MB/s | 224 kB 00:00 (29/53): nss-sysinit-3.44.0-7.el7_7.x86_64.rpm 1.2 MB/s | 65 kB 00:00 (30/53): nss-tools-3.44.0-7.el7_7.x86_64.rpm 2.4 MB/s | 528 kB 00:00 (31/53): nss-util-3.44.0-4.el7_7.x86_64.rpm 1.3 MB/s | 79 kB 00:00 (32/53): numactl-libs-2.0.12-3.el7_7.1.x86_64.rpm 387 kB/s | 30 kB 00:00 (33/53): perl-Git-1.8.3.1-21.el7_7.noarch.rpm 773 kB/s | 55 kB 00:00 (34/53): python-firewall-0.6.3-2.el7_7.4.noarch.rpm 1.8 MB/s | 353 kB 00:00 (35/53): python-perf-3.10.0-1062.18.1.el7.x86_64.rpm 3.0 MB/s | 7.9 MB 00:02 (36/53): rsyslog-8.24.0-41.el7_7.4.x86_64.rpm 2.4 MB/s | 618 kB 00:00 (37/53): selinux-policy-3.13.1-252.el7_7.6.noarch.rpm 2.0 MB/s | 492 kB 00:00 (38/53): selinux-policy-targeted-3.13.1-252.el7_7.6.noarch.rpm 2.5 MB/s | 7.0 MB 00:02 (39/53): sg3_utils-1.37-18.el7_7.2.x86_64.rpm 2.3 MB/s | 646 kB 00:00 (40/53): sg3_utils-libs-1.37-18.el7_7.2.x86_64.rpm 972 kB/s | 65 kB 00:00 (41/53): sqlite-3.7.17-8.el7_7.1.x86_64.rpm 1.8 MB/s | 394 kB 00:00 (42/53): subscription-manager-rhsm-certificates-1.24.13-4.el7.centos.x86_64.rpm 1.3 MB/s | 228 kB 00:00 (43/53): sudo-1.8.23-4.el7_7.2.x86_64.rpm 1.5 MB/s | 842 kB 00:00 (44/53): systemd-219-67.el7_7.4.x86_64.rpm 1.7 MB/s | 5.1 MB 00:03 (45/53): systemd-libs-219-67.el7_7.4.x86_64.rpm 1.5 MB/s | 411 kB 00:00 (46/53): systemd-sysv-219-67.el7_7.4.x86_64.rpm 1.3 MB/s | 89 kB 00:00 (47/53): util-linux-2.23.2-61.el7_7.1.x86_64.rpm 2.0 MB/s | 2.0 MB 00:00 (48/53): kernel-3.10.0-1062.18.1.el7.x86_64.rpm 1.2 MB/s | 50 MB 00:39 (49/53): java-11-openjdk-headless-11.0.6.10-1.el7_7.x86_64.rpm 1.1 MB/s | 39 MB 00:35 (50/53): docker-client-1.13.1-109.gitcccb291.el7.centos.x86_64.rpm 1.5 MB/s | 3.9 MB 00:02 (51/53): docker-common-1.13.1-109.gitcccb291.el7.centos.x86_64.rpm 844 kB/s | 98 kB 00:00 (52/53): 542e19271992454de06b221528922a2e49e7165678a3e02af62e24cac1ce513d-google-cloud-sdk-285.0.1-1.noarch.rpm 3.0 MB/s | 53 MB 00:17 (53/53): docker-1.13.1-109.gitcccb291.el7.centos.x86_64.rpm 2.0 MB/s | 18 MB 00:08 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 4.5 MB/s | 230 MB 00:51 Running transaction check Transaction check succeeded.
Step 11: Upgrade CentOS 7 Release Packages
Now it is time to upgrade CentOS 7 release-package to CentOS 8 release-package to upgrade YUM Repository using below dnf upgrade
command.
[root@localhost ~]# dnf upgrade -y 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} Last metadata expiration check: 0:01:45 ago on Mon 23 Mar 2020 06:46:01 AM EDT. centos-release-8.1-1.1911.0.8.el8.x86_64.rpm 153 kB/s | 21 kB 00:00 centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm 122 kB/s | 11 kB 00:00 centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm 110 kB/s | 12 kB 00:00 Package centos-gpg-keys not installed, cannot update it. No match for argument: /var/cache/dnf/commandline-5fda33494c9fb882/packages/centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm Package centos-repos not installed, cannot update it. No match for argument: /var/cache/dnf/commandline-5fda33494c9fb882/packages/centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm Dependencies resolved. ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Upgrading: centos-release x86_64 8.1-1.1911.0.8.el8 @commandline 21 k Installing dependencies: centos-gpg-keys noarch 8.1-1.1911.0.8.el8 @commandline 11 k centos-repos x86_64 8.1-1.1911.0.8.el8 @commandline 12 k Transaction Summary ======================================================================================================================================================================== Install 2 Packages Upgrade 1 Package Total size: 44 k Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : centos-gpg-keys-8.1-1.1911.0.8.el8.noarch 1/4 Installing : centos-repos-8.1-1.1911.0.8.el8.x86_64 2/4 Upgrading : centos-release-8.1-1.1911.0.8.el8.x86_64 3/4 Cleanup : centos-release-7-7.1908.0.el7.centos.x86_64 4/4 warning: file /etc/yum/vars/infra: remove failed: No such file or directory warning: file /etc/yum/vars/contentdir: remove failed: No such file or directory Verifying : centos-gpg-keys-8.1-1.1911.0.8.el8.noarch 1/4 Verifying : centos-repos-8.1-1.1911.0.8.el8.x86_64 2/4 Verifying : centos-release-8.1-1.1911.0.8.el8.x86_64 3/4 Verifying : centos-release-7-7.1908.0.el7.centos.x86_64 4/4 Upgraded: centos-release-8.1-1.1911.0.8.el8.x86_64 Installed: centos-gpg-keys-8.1-1.1911.0.8.el8.noarch centos-repos-8.1-1.1911.0.8.el8.x86_64 Complete!
Step 12: Upgrade EPEL Package
Once CentOS 8 Release Packages are upgraded, we now need to upgrade EPEL package using dnf upgrade -y epel-release
command as shown below.
[root@localhost ~]# dnf upgrade -y epel-release Extra Packages for Enterprise Linux 7 - x86_64 2.8 MB/s | 16 MB 00:05 CentOS-8 - Base 5.5 MB/s | 5.0 MB 00:00 CentOS-8 - AppStream 221 kB/s | 6.5 MB 00:30 CentOS-8 - Extras 39 kB/s | 4.2 kB 00:00 Last metadata expiration check: 0:00:01 ago on Mon 23 Mar 2020 06:49:46 AM EDT. Dependencies resolved. ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Upgrading: epel-release noarch 8-8.el8 extras 23 k Transaction Summary ======================================================================================================================================================================== Upgrade 1 Package Total download size: 23 k Downloading Packages: epel-release-8-8.el8.noarch.rpm 138 kB/s | 23 kB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 32 kB/s | 23 kB 00:00 warning: /var/cache/dnf/extras-2770d521ba03e231/packages/epel-release-8-8.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY CentOS-8 - Extras 0.0 B/s | 0 B 00:00 Importing GPG key 0x8483C65D: Userid : "CentOS (CentOS Official Signing Key) <security@centos.org>" Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Upgrading : epel-release-8-8.el8.noarch 1/2 Cleanup : epel-release-7-12.noarch 2/2 Verifying : epel-release-8-8.el8.noarch 1/2 Verifying : epel-release-7-12.noarch 2/2 Upgraded: epel-release-8-8.el8.noarch Complete!
Step 13: Cleanup all
You can clean up all the files which is not required using dnf clean all
command as shown below.
[root@localhost ~]# dnf clean all 68 files removed
Step 14: Remove older Kernel
You can either keep the older kernels or remove it all as older kernels are now not required for CentOS 8.
[root@localhost ~]# rpm -e `rpm -q kernel`
Step 15: Remove Conflicting Packages
You can remove all the System conflicting packages using below command as it is not required in CentOS 8.
[root@localhost ~]# rpm -e --nodeps sysvinit-tools
Step 16: Upgrade Your System to CentOS 8
Now we need to use dnf tool to upgrade our system to CentOS 8 release using below command.
[root@localhost ~]# dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync Upgrading : wget-1.19.5-8.el8_1.1.x86_64 496/976 Running scriptlet: wget-1.19.5-8.el8_1.1.x86_64 496/976 Installing : python2-pip-9.0.3-14.module_el8.1.0+219+cf9e6ac9.noarch 497/976 Installing : python2-pyyaml-3.12-16.module_el8.1.0+219+cf9e6ac9.x86_64 498/976 Upgrading : kbd-2.0.4-8.el8.x86_64 499/976 Upgrading : libSM-1.2.3-1.el8.x86_64 500/976 Upgrading : sg3_utils-1.44-3.el8.x86_64 501/976 Downgrading : irqbalance-2:1.4.0-4.el8.x86_64 502/976 Running scriptlet: irqbalance-2:1.4.0-4.el8.x86_64 502/976 Installing : python3-dmidecode-3.12.2-15.el8.x86_64 503/976 Upgrading : javapackages-tools-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch 504/976 Upgrading : passwd-0.80-2.el8.x86_64 505/976 Installing : gnupg2-smime-2.2.9-1.el8.x86_64 506/976 Upgrading : sudo-1.8.25p1-8.el8_1.x86_64 507/976 Running scriptlet: sudo-1.8.25p1-8.el8_1.x86_64 507/976 Installing : python3-pytoml-0.1.14-5.git7dea353.el8.noarch 508/976 Upgrading : kernel-tools-4.18.0-147.5.1.el8_1.x86_64 509/976 Running scriptlet: man-db-2.7.6.1-17.el8.x86_64 510/976 Upgrading : man-db-2.7.6.1-17.el8.x86_64 510/976 Running scriptlet: man-db-2.7.6.1-17.el8.x86_64 510/976 Upgrading : libdrm-2.4.98-2.el8.x86_64 511/976 Installing : fuse-overlayfs-0.7.2-1.module_el8.1.0+272+3e64ee36.x86_64 512/976 Upgrading : e2fsprogs-1.44.6-3.el8.x86_64 513/976 Upgrading : perl-IO-Compress-2.081-1.el8.noarch 514/976
Step 17: Install Kernel Package
Next step is to install Kernel core package using dnf install -y kernel-core
command as shown below. This kernel core package is required for CentOS 8.
[root@localhost ~]# dnf install -y kernel-core Last metadata expiration check: 0:23:51 ago on Mon 23 Mar 2020 06:53:40 AM EDT. Dependencies resolved. ======================================================================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================================================================== Installing: kernel-core x86_64 4.18.0-147.5.1.el8_1 BaseOS 25 M Transaction Summary ======================================================================================================================================================================== Install 1 Package Total download size: 25 M Installed size: 58 M Downloading Packages: kernel-core-4.18.0-147.5.1.el8_1.x86_64.rpm 3.4 MB/s | 25 MB 00:07 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 3.0 MB/s | 25 MB 00:08 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded.
Step 18: Minimal Installation
You can use minimal installation by running dnf -y groupupdate "Core" "Minimum Install"
command as shown below.
[root@localhost ~]# dnf -y groupupdate "Core" "Minimal Install" Last metadata expiration check: 0:25:07 ago on Mon 23 Mar 2020 06:53:40 AM EDT. Dependencies resolved. ======================================================================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================================================================== Installing group/module packages: dnf-plugin-spacewalk noarch 2.8.5-11.module_el8.1.0+211+ad6c0bc7 AppStream 24 k dnf-plugins-core noarch 4.0.8-3.el8 BaseOS 62 k prefixdevname x86_64 0.1.0-6.el8 BaseOS 466 k rng-tools x86_64 6.6-2.el8 BaseOS 57 k sssd-common x86_64 2.2.0-19.el8 BaseOS 1.5 M sssd-kcm x86_64 2.2.0-19.el8 BaseOS 213 k yum noarch 4.2.7-7.el8_1 BaseOS 181 k Installing dependencies: python3-dnf-plugin-spacewalk noarch 2.8.5-11.module_el8.1.0+211+ad6c0bc7 AppStream 30 k python3-hwdata noarch 2.3.6-3.el8 AppStream 39 k python3-netifaces x86_64 0.10.6-4.el8 AppStream 25 k python3-newt x86_64 0.52.20-9.el8 AppStream 63 k python3-pyOpenSSL noarch 18.0.0-1.el8 AppStream 103 k python3-rhn-client-tools x86_64 2.8.16-13.module_el8.1.0+211+ad6c0bc7 AppStream 108 k python3-rhnlib noarch 2.8.6-8.module_el8.1.0+211+ad6c0bc7 AppStream 77 k rhn-client-tools x86_64 2.8.16-13.module_el8.1.0+211+ad6c0bc7 AppStream 385 k c-ares x86_64 1.13.0-5.el8 BaseOS 93 k libbasicobjects x86_64 0.1.1-39.el8 BaseOS 31 k libcollection x86_64 0.7.0-39.el8 BaseOS 48 k libdhash x86_64 0.5.0-39.el8 BaseOS 34 k libgudev x86_64 232-4.el8 BaseOS 33 k libini_config x86_64 1.3.1-39.el8 BaseOS 70 k libldb x86_64 1.5.4-2.el8 BaseOS 173 k libnfsidmap x86_64 1:2.3.3-26.el8 BaseOS 118 k libpath_utils x86_64 0.2.1-39.el8 BaseOS 34 k libref_array x86_64 0.1.5-39.el8 BaseOS 33 k libsss_certmap x86_64 2.2.0-19.el8 BaseOS 128 k libsss_idmap x86_64 2.2.0-19.el8 BaseOS 104 k libsss_nss_idmap x86_64 2.2.0-19.el8 BaseOS 111 k libtalloc x86_64 2.1.16-3.el8 BaseOS 49 k libtdb x86_64 1.3.18-2.el8 BaseOS 58 k Installing weak dependencies: libsss_autofs x86_64 2.2.0-19.el8 BaseOS 101 k libsss_sudo x86_64 2.2.0-19.el8 BaseOS 100 k sssd-nfs-idmap x86_64 2.2.0-19.el8 BaseOS 97 k Enabling module streams: satellite-5-client 1.0 Installing Environment Groups: Minimal Install Installing Groups: Core
Step 19: Restart Your System
Now you can restart your system using init 6
or reboot
command to start your System with the new Kernel.
[root@localhost ~]# init 6
Step 20: Check your OS version
Once restarted, now you can now check from /etc/redhat-release
file if the system is upgraded to CentOS 8 or not. As you can see from below output, OS is now upgraded to CentOS 8 version 8.1.1911
.
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
Also Read: Upgrade CentOS 7 to 8
Reference: Steps to Upgrade CentOS 7 to CentOS 8