CentOS merupakan salah satu distribusi Linux yang populer, memberikan dukungan dan stabilitas bagi banyak pengguna dan pengembang. Memperbarui sistem operasi adalah langkah penting untuk memastikan keamanan, kinerja, dan akses ke fitur terbaru.
CentOS 7 merupakan rilis terakhir dari project CentOS dan telah memasuki masa akhir pakai (EOL) pada Juni 2024 selanjutnya project ini diteruskan dengan CentOS Stream yang berfungsi sebagai versi rolling-release yang berada di antara versi stabil CentOS dan pengembangan upstream dari Red Hat Enterprise Linux (RHEL).
Dalam artikel kali ini, kita akan belajar melakukan upgrade OS CentOS 7 ke CentOS 8 dan juga membahas beberapa error yang mungkin terjadi saat melakukan proses upgrade serta penanganannya.
Untuk percobaan upgrade ini, penulis menggunakan layanan Cloud Server dari Ardhglobal, dan sebelum melakukan proses upgrade penting untuk melakukan backup data pada server yang anda gunakan.
PERHATIAN : Langkah-langkah pada artikel ini bisa saja tidak sesuai dengan kondisi pada sisi server yang anda jalankan, ada baiknya tidak melakukan penerapan secara langsung.
Langkah 1 : Install EPEL Repository
Untuk instalasi EPEL Repository anda dapat menjalankan perintah berikut di server anda:
yum install epel-release -y
Jika saat menjalankan perintah tersebut, anda mendapat error seperti berikut :
[root@rnd ~]# yum install epel-release -y
Loaded plugins: fastestmirror
Determining fastest mirrors
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
Cannot find a valid baseurl for repo: base/7/x86_64
Hal tersebut karena repository yang digunakan pada server masih menggunakan repository lama. Solusi untuk error yang didapatkan seperti diatas adalah dengan melakukan update baseurl pada file CentOs-Base.repo
[root@rnd /]# cd /etc/yum.repos.d/
[root@rnd yum.repos.d]# ls -al
total 48
drwxr-xr-x 2 root root 4096 Dec 3 2020 .
drwxr-xr-x 74 root root 4096 Oct 29 19:30 ..
-rw-r--r-- 1 root root 1664 Nov 23 2020 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 Nov 23 2020 CentOS-CR.repo
-rw-r--r-- 1 root root 649 Nov 23 2020 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 314 Nov 23 2020 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 Nov 23 2020 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 Nov 23 2020 CentOS-Sources.repo
-rw-r--r-- 1 root root 8515 Nov 23 2020 CentOS-Vault.repo
-rw-r--r-- 1 root root 616 Nov 23 2020 CentOS-x86_64-kernel.repo
[root@rnd yum.repos.d]# vi CentOS-Base.repo
Untuk isi dari file CentOS-Base.repo akan terlihat seperti dibawah ini :
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Lakukan perubahan pada url mirrorlist yang sebelumnya menggunakan http://mirrorlist.centos.org menjadi http://vault.centos.org juga melakukan uncomment untuk bari baseurl dan mengganti url dari http://mirror.centos.org menjadi http://vault.centos.org
Setelah update url mirrorlist dan baseurl di update akan terlihat seperti dibawah ini
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://vault.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://vault.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://vault.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://vault.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Silahkan kembali menjalankan perintah : yum -y install epel-release , dan pastikan untuk instalasi epel-release telah komplit.
Langkah 2 : Install yum-utils Tools
Setelah berhasil menginstall EPEL, langkah selanjutnya melakukan installasi yum-utils dengan perintah berikut :
# yum -y yum-utils
Selanjutnya adalah dengan menginstall paket RPM dengen menjalankan perintah
#yum install rpmconf
#rpmconf -a
Selanjutnya, lakukan pembersihan semua paket yang tidak Anda perlukan, dengan menjalankan perintah:
#package-cleanup –leaves
#packeage-cleanup –orphans
[root@rnd ~]# package-cleanup --leaves
Loaded plugins: fastestmirror
bind-libs-lite-9.11.4-26.P2.el7_9.15.x86_64
libsysfs-2.1.0-16.el7.x86_64
[root@rnd ~]# package-cleanup --orphans
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* epel: d2lzkl7pfhq30w.cloudfront.net
[root@rnd ~]#
Langkah 3 : Install DNF pada CentOS 7
Sekarang kita akan menginstall pengelola paket DNF sebagai pengelola paket default pada CentOS 8. Sebagai pengingat pada CentOS 7 untuk pengelola paket yang kita gunakan adalah Yum.
#yum -y install dnf
Selanjutnya kita akan menghapus pengelola paket YUM dari sistem dan juga menghapus folder YUM pada folder /etc, dengan menjalankan perintah :
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum
Langkah 4 : Upgrading CentOS 7 ke CentOS 8
Sekarang kita telah siap untuk melakukan upgrade CentOS 7 ke CentOS 8, tetapi sebelum melakukan proses tersebut kita perlu melakukan upgrade untuk paket dnf pada server terlebih dahulu dengan menjalankan perintah :
#dnf update
Selanjutnya, silahkan menginstall paket CentOS dengan menggunakan perintah berikut, hal ini akan memakan waktu beberapa saat :
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}
Sekarang mari kita lakukan upgrade untuk EPEL Repository dengan menjalankan perintah berikut :
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Setelah sukses melakukan update EPEL Repository, selanjutnya kita akan membersihkan temporary files juga menghapus kernel CentOS 7 dan juga menghapus paket yang konflik dengan menjalankan perintah:
#dnf clean up
#rpm -e `rpm -q kernel
`
#rpm -e --nodeps sysvinit-tools
Setelahnya, mari kita lakukan upgrade CentOS 8 dengan menjalankan perintah berikut
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
Pada saat menjalankan perintah tersebut, kemungkinan anda akan mendapatkan error seperti berikut
Extra Packages for Enterprise Linux 8 - x86_64 1.2 MB/s | 14 MB 00:11
CentOS Linux 8 - BaseOS 0.0 B/s | 0 B 00:00
CentOS Linux 8 - AppStream 0.0 B/s | 0 B 00:00
CentOS Linux 8 - Extras 0.0 B/s | 0 B 00:00
Failed to synchronize cache for repo 'baseos', ignoring this repo.
Failed to synchronize cache for repo 'appstream', ignoring this repo.
Failed to synchronize cache for repo 'extras', ignoring this repo.
Last metadata expiration check: 0:00:18 ago on Tue 29 Oct 2024 10:15:05 PM +07.
Error:
Problem: The operation would result in removing the following protected packages: dnf
Error tersebut adalah bahwa terjadi gagal sinkronisasi pada repo baseos, appstream dan juga extras sehingga proses untuk melakukan upgrade CentOS 8 terhambat. Untuk melihat lokasi repo pada CentOS 8 anda dapat masuk ke dalam folder /etc/yum.repos.d/ dengan menjalankan perintah:
cd /etc/yum.repos.d/
Masalah ini merupakan masalah yang sama seperti saat kita melakukan penginstallan epel-release diawal, jika kita membuka file CentOS-Linux-BaseOS.repo , kita akan menemukan url pada mirrorlist menuju url yang salah.
Solusinya adalah, dengan melakukan penyesuaian url mirrorlist dan baseurl untuk kita gunakan menjadi http://vault.centos.org pada tiga file repo yang mengalami error yaitu :
- CentOS-Linux-BaseOS.repo
- CentOS-Linux-AppStream.repo
- CentOS-Linux-Extras.repo
Setelah penyesuaian URL mirrorlist dan Baseurl telah kita lakukan, maka silahkan untuk kembali menjalankan perintah untuk melakukan upgrade CentOS 8.
Jika anda masih mendapatkan error yang sama, silahkan untuk menjalankan perintahkan berikut
[root@nohost ~]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@nohost ~]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
Dan pastikan jika anda telah menjalankan kembali perintah dnf clean up kembali sebelum menjalankan perintah : dnf -y –releasever=8 –allowerasing –setopt=deltarpm=false distro-sync
Mungkin anda akan mengalami error saat melakukan upgrade CentOS 8 karena adanya paket yang mengalami konflik, maka anda dapat melakukan penghapusan paket tersebut secara manual.
Error: transaction check vs depsolve:
(NetworkManager >= 1.20 or dhclient) is needed by dracut-network-049-191.git20210920.el8.x86_64
rpmlib(RichDependencies) <= 4.12.0-1 is needed by dracut-network-049-191.git20210920.el8.x86_64
To diagnose the problem, try running: 'rpm -Va --nofiles --nodigest'.
You probably have corrupted RPMDB, running 'rpm --rebuilddb' might fix the issue.
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Setelah menghapus paket yang mengalami konflik, silahkan kembali mengulangi proses untuk membersihkan temporary file dan kembali menjalankan perintah upgrade CentOS 8.
Berikutnya, dalam proses upgrade kembali mendapatkan error seperti berikut :
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
Error: Transaction check error:
file /usr/lib/python3.6/site-packages/rpmconf/pycache/rpmconf.cpython-36.opt-1.pyc from install of python3-rpmconf-1.1.7-2.el8.1.noarch conflicts with file from package python36-rpmconf-1.1.7-1.el7.1.noarch
file /usr/lib/python3.6/site-packages/rpmconf/pycache/rpmconf.cpython-36.pyc from install of python3-rpmconf-1.1.7-2.el8.1.noarch conflicts with file from package python36-rpmconf-1.1.7-1.el7.1.noarch
file /usr/share/man/man3/rpmconf.3.gz from install of python3-rpmconf-1.1.7-2.el8.1.noarch conflicts with file from package python36-rpmconf-1.1.7-1.el7.1.noarch
Solusinya adalah dengan menghapus paket phyton36 dengan menjalan perintah seperti pada gambar dibawah.
Proses ini akan membutuhkan waktu beberapa saat, sampai seluruh paket CentOS terinstall ke server yang kita gunakan.
Langkah 5 : Install Kernel Baru untuk CentOS 8
Selanjutnya kita akan melakukan install kernel baru yang akan kita terapkan pada CentOS 8 pasca upgrade dari CentOS 7, sebelum melakukan penginstallan kernel baru, kita perlu melakukan pengecekan kernel yang terinstall pada sisi server dengan menjalankan perintah :
rpm -qa | grep kernel
Kemudian silahkan lakukan installasi kernel baru pada server dengan menjalankan perintah :
dnf -y install kernel-core
Setelah penginstallan Kernel-Core selesai, maka untuk selanjutnya sebagai langkah terakhir yang kita lakukan yakni penginstallan Core CentOS 8 dan Minimal Paket untuk server dengan menjalankan perintah :
dnf -y groupupdate "Core" "Minimal Install"
Congratulation, untuk server yang sebelumnya menggunakan sistem operasi CentOS telah berhasil kita upgrade menggunakan CentOS 8.
Untuk memastikannya anda dapat melakukan pengecekan versi CentOS yang terinstall pada server menggunakan perintah : cat /etc/redhat-release.
[root@rnd /]# cat /etc/redhat-release
CentOS Linux release 8.5.2111
[root@rnd /]#
Conclusion
Proses upgrade dari CentOS 7 ke CentOS 8 merupakan langkah penting untuk memastikan sistem Anda tetap aman, cepat, dan memiliki akses ke fitur-fitur terbaru yang ditawarkan. Dengan mengikuti langkah-langkah yang telah dijelaskan, Anda dapat melakukan upgrade dengan lancar dan tanpa kendala.
Pastikan untuk selalu melakukan backup data penting dan memeriksa kompatibilitas aplikasi sebelum memulai proses. Dengan persiapan yang matang, Anda akan dapat menikmati semua keuntungan yang ditawarkan oleh CentOS 8, serta memastikan bahwa lingkungan server Anda tetap stabil dan mendukung perkembangan teknologi di masa depan. Selamat meng-upgrade dan semoga pengalaman Anda dengan CentOS 8 menjadi lebih baik!