Linux dünyasında uzun süre CentOS 7 en popüler ve güvenilir dağıtımlardan biri oldu. Ancak zaman ilerledikçe CentOS 7’nin resmi desteği sona erdi ve yeni projelerde artık daha güncel platformlara geçiş yapmak bir zorunluluk haline geldi.
Benim için bu süreç eski bir CentOS 7 jump host VM’i yeni bir proje (Red Hat OpenShift Virtualization kurulumu) için tekrar kullanma ihtiyacıyla başladı. Sistemi sil baştan kurmak yerine in-place upgrade yani yerinde yükseltme yöntemini denemek istedim.
Resmi olarak CentOS 7’den doğrudan CentOS Stream 9’a yükseltme desteklenmese de topluluk araçları sayesinde bu işlemi iki aşamada yapmak mümkün:
- CentOS 7 → CentOS Stream 8 (ELevate ile)
- CentOS Stream 8 → CentOS Stream 9 (dnf system-upgrade ile)
Bu makalemde yaşadığım süreci hiç hata yapmadan en temiz ve güvenli adımlarla aktaracağım.
Ön Gereksinimler ve Hazırlıklar
Yükseltmeye başlamadan önce bazı noktaları netleştirelim:
- Bu işlem production ortamında tavsiye edilmez. Benim uygulamam tamamen test amaçlı bir VM üzerinde yapıldı.
- Sisteminizin internet bağlantısı olmalı ve paketler için yeterli disk alanı bulunmalı.
- Tüm komutlar root yetkileriyle çalıştırılmalıdır (gerekirse
sudo). - İşlem sırasında birkaç kez yeniden başlatma (reboot) gerekebilir.
AŞAMA 1: CentOS 7’den CentOS Stream 8’e Geçiş
CentOS 7 artık eski kaldığı için ilk adımda onu CentOS Stream 8’e taşımamız gerekiyor.
Bunun için topluluk tarafından geliştirilen ELevate aracını kullanıyoruz.
Sistemi Güncelleyin
Önce CentOS 7’nin tüm güncel yamalarını yükleyelim:
yum update -y
reboot
Neden?
Eski paketlerle yükseltme yapmak çoğu zaman hatalara yol açar.
En güncel sürümle başlamak en güvenli yoldur.
Gerekli Depoları ve ELevate Araçlarını Kurun
yum install -y epel-release
yum install -y leapp-upgrade leapp-data-centos
- EPEL (Extra Packages for Enterprise Linux): Ek paketlere erişim sağlar.
- ELevate: CentOS sürümleri arasında yükseltme yapabilen tek araçtır.
Bilinen Engelleri (Blocker) Temizleyin
Bazı eski sürücüler (ör. pata_acpi) yükseltmeyi engeller. Onları kaldırıyoruz:
modprobe -r pata_acpi
Ayrıca yanıt dosyası oluşturarak ELevate’in soracağı soruları önceden cevaplıyoruz:
# /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
confirm = True
[driver_allowlist]
allow_drivers = pata_acpi
Ön Yükseltme Kontrolü
leapp preupgrade
Bu komut, sistemi simüle ederek yükseltme sırasında çıkabilecek sorunları raporlar.
Raporları şu dosyalardan kontrol edin:
/var/log/leapp/leapp-report.txt/var/log/leapp/answerfile
Yükseltmeyi Başlatın
leapp upgrade --target 8.9
reboot
Yeniden başlattığınızda sistem otomatik olarak CentOS Stream 8’e yükseltilmiş olacaktır.
Kernel artık 4.18.x sürümünde çalışıyor olmalı.
AŞAMA 2: CentOS Stream 8’den CentOS Stream 9’a Geçiş
Şimdi sıra en güncel sürüm olan CentOS Stream 9’a geçmeye geldi.
Vault Depolarına Geçin
Çünkü CentOS Stream 8 artık EOL (End of Life) oldu ve normal depolar 404 hatası verebilir.
/etc/yum.repos.d/ içindeki BaseOS ve AppStream repo dosyalarını şu şekilde değiştirin:
baseurl=https://vault.centos.org/8-stream/BaseOS/x86_64/os/
baseurl=https://vault.centos.org/8-stream/AppStream/x86_64/os/
Ardından önbelleği yenileyin:
dnf clean all
dnf makecache
Yükseltme Eklentisini Kurun
dnf install -y dnf-plugin-system-upgrade
Bu eklenti sayesinde dnf ile sistem yükseltmesi yapılabiliyor.
EPEL Modular’ı Devre Dışı Bırakın
dnf config-manager --set-disabled epel-modular
Çünkü bu repo yükseltme sırasında 404 hatası verebiliyor.
Yükseltme Paketlerini İndirin
dnf system-upgrade download --releasever=9 --allowerasing
- Eğer çakışan paketler çıkarsa (ör.
iptables-ebtables,make-devel) bunları kaldırın:
dnf remove iptables-ebtables make-devel
Sonra komutu yeniden çalıştırın.
Yükseltmeyi Başlatın
dnf system-upgrade reboot
Bu noktada sistem yeniden başlar ve yükseltme işlemi otomatik yapılır.
Artık CentOS Stream 9 çalışıyor olmalı (kernel 5.14.x).
Yükseltme tamamlandıktan sonra sistemi düzenli hale getirmek için birkaç adım daha gerekiyor:
- Gereksiz araçları kaldırın:
dnf remove leapp* python2-* -y
- RPM veritabanını onarın:
rpm --rebuilddb
- Önbelleği temizleyin:
dnf clean all
dnf autoremove -y
- Geçici repo dosyalarını silin:
rm -f /etc/yum.repos.d/CentOS-Vault.repo /etc/yum.repos.d/CentOS-Stream-Extras-common.repo
- EPEL’i tekrar aktif edin (opsiyonel):
dnf config-manager --set-enabled epel
EPEL GPG Key Sorunlarını Çözme
CentOS 9’a geçtikten sonra EPEL güncellemelerinde GPG hatası alabilirsiniz. Bunun nedeni sistemin hâlâ EPEL 8 anahtarını kullanıyor olmasıdır.
Çözüm:
- Yeni anahtarı indirin ve içe aktarın:
sudo curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9 https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
- Repo dosyalarını güncelleyin:
sudo sed -i 's|RPM-GPG-KEY-EPEL-8|RPM-GPG-KEY-EPEL-9|g' /etc/yum.repos.d/epel*.repo
- Önbelleği temizleyin ve güncelleyin:
sudo dnf clean all
sudo dnf makecache
sudo dnf update -y
Artık güncellemeler sorunsuz çalışacaktır.