Oracle Linux is a RHEL-based Linux distribution developed by Oracle. It is one of the best alternative to CentOS Linux. This guide explains how to migrate CentOS Linux to Oracle Linux using
After CentOS Community Manager Rich Bowen announced that they are shifting focus from CentOS Linux to CentOS Stream, there is a great resentment among developers and users. Many users strongly condemns this decision. However, the decision is already made and it seems that there is no going back. When CentOS Linux 8 ends at December 31, 2021, your best and only option will be to migrate to CentOS Stream 8. Since CentOS Stream is a rolling preview (i.e. development), a lot of users raised their concern about its stability. At present, the only stable and viable RHEL-based alternative to CentOS is Oracle Linux. If you'd like to migrate CentOS Linux to Oracle Linux, this tutorial will teach you how.
Centos2ol (CentOS To Oracle Linux) script
The Oracle development team has created a script called
"centos2ol.sh" to convert your CentOS 8, 7 and 6 systems to Oracle Linux.
Centos2ol script has the following two main functions:
- It switches CentOS system's yum configuration to use the Oracle Linux yum server to update some core packages.
- It installs the latest Oracle Unbreakable Enterprise Kernel (UEK).
That's it! You don't even need to restart the system after switching. However, if you want to take advantage of UEK, reboot your system and log in to Oracle Linux kernel.
A word of caution
I used this script to migrate CentOS 7 to Oracle Linux 7. The transition was not successful at the first time. However, I got lucky at the second attempt. I do not recommend this script in production. Because, it broke my CentOS 7 server at first attempt and the server didn't boot. Luckily, it was just a testing VM and I simply reinstalled it. So I can't guarantee that this script will convert CentOS to Oracle Linux without any issues. YOU HAVE BEEN WARNED.
Let us begin the migration.
Migrate CentOS Linux To Oracle Linux
First of all, backup your important data, just in case.
Then, update your CentOS 7 system to most recent version:
$ sudo dnf update
On CentOS 6, run this command to update it:
$ sudo yum update
After updating your system, reboot it.
Let us check the CentOS 7 version:
$ cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
Next, make sure you have installed Python 2.x, which is required by
centos2ol script. If
python2 is not available, you may get the following output:
Checking for required packages... 'python2' command not found. Please install or add it to your PATH and try again. For assistance, please email <[email protected]>.
To install Python2, simply run:
$ sudo dnf install python2
$ sudo yum install python2
Next, download the
$ curl -O https://linux.oracle.com/switch/centos2ol.sh
Or, download it from GitHub:
$ curl -O https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh
and run it as
sudo user to start migrating your CentOS Linux to Oracle Linux:
$ sudo sh centos2ol.sh
$ sudo bash centos2ol.sh
Now the Oracle Linux migration process will start. The centos2ol script will backup the existing CentOS repository files, add Oracle Linux repositories, replace centos logos with oracle logos, update a few core packages and install the latest Oracle Unbreakable Enterprise Kernel.
All of these are fully automated. Just run the script and sit back!
This will take a while depending upon the speed of your Internet connection. Please be patient.
The switch was successful but with a few Python package errors.
[...] Error: Package: python2-dnf-plugins-core-188.8.131.52-3.el7_6.noarch (@extras/7) Requires: python2-hawkey >= 0.7.0 Removing: python2-hawkey-0.22.5-2.el7_9.x86_64 (installed) python2-hawkey = 0.22.5-2.el7_9 Downgraded By: python2-hawkey-0.6.3-4.el7.x86_64 (ol7_latest) python2-hawkey = 0.6.3-4.el7 Error: Package: python2-dnf-184.108.40.206-1.el7_6.noarch (@extras/7) Requires: python2-hawkey >= 0.22.5 Removing: python2-hawkey-0.22.5-2.el7_9.x86_64 (installed) python2-hawkey = 0.22.5-2.el7_9 Downgraded By: python2-hawkey-0.6.3-4.el7.x86_64 (ol7_latest) python2-hawkey = 0.6.3-4.el7 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest Could not automatically sync with Oracle Linux repositories. Check the output of 'yum distro-sync' to manually resolve the issue. For assistance, please email <[email protected]>.
I simply ran the following command to know how to manually resolve the issue:
$ sudo yum distro-sync
It didn't help. I kept receiving the same output as before. I couldn't figure out how to solve. So I ignored this message and restarted the system.
Good lord! It worked! I can see that the Grub is updated with Oracle Linux entry.
After logging into the newly converted Oracle Linux 7 system, I checked the distribution version and Kernel details to verify if Oracle Linux migration is successful:
$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo)
$ uname -r 5.4.17-2036.100.6.1.el7uek.x86_64
Yes, it is! I have successfully converted CentOS Linux 7 to Oracle Linux 7.
Finally, I changed the hostname:
# systemctl set-hostname ol7
Log out and log back in to apply the changes. Now everything is perfect!
Hope this helps.