CentOS Stream ve Rocky Linux: Farklar ve Tercih Kriterleri

Red Hat’in 2020 sonunda CentOS 8’in ömrünü beklenmedik şekilde kısaltma kararı, Linux dünyasında gerçek anlamda bir deprem etkisi yarattı. Yıllarca sunucu altyapılarını CentOS üzerine inşa etmiş sistem yöneticileri kendilerini bir anda belirsizlik içinde buldu. Bu kargaşadan iki farklı yol doğdu: Red Hat’in önerdiği CentOS Stream ve topluluk tarafından geliştirilen Rocky Linux. Bugün bu iki dağıtımı gerçek dünya perspektifinden ele alacağız ve hangi durumda hangisini tercih etmeniz gerektiğini netleştireceğiz.

CentOS Stream Nedir, Ne Değildir?

CentOS Stream’i anlamak için önce zihinlerdeki eski CentOS imgesini bir kenara bırakmak gerekiyor. Eski CentOS, RHEL’in “downstream” klonuydu. Yani Red Hat Enterprise Linux çıktıktan sonra, kaynak kodları temizlenip CentOS olarak paketleniyordu. Bu model sayesinde RHEL ile neredeyse birebir uyumlu, ücretsiz bir dağıtım elde ediyordunuz.

CentOS Stream ise tam tersine upstream konumunda. Red Hat’in kendi tanımıyla “RHEL’in bir sonraki sürümünün geliştirme kanalı.” Peki bu ne anlama geliyor? RHEL 9.x için hazırlanan güncellemeler, önce CentOS Stream 9’a geliyor, burada test ediliyor, sonra RHEL’e dahil ediliyor. Yani CentOS Stream, stabil bir üretim ortamı değil, sürekli akan bir geliştirme kanalı.

Bu fark pratikte ciddi sonuçlar doğuruyor. Bir kernel güncellemesi, RHEL’de onaylı sürümden birkaç hafta önce Stream’e düşüyor. Kütüphane versiyonları, paket bağımlılıkları sürekli değişiyor. Çoğu senaryo için bu kabul edilebilir, hatta avantajlı bile olabilir. Ama bazı senaryolar için ciddi bir sorun.

CentOS Stream Kurulumu ve Temel Yapılandırma

Stream’i bir test ortamına kurup hemen işe koyulabilirsiniz. Temel sistem güncellemesi ve depo yapısını kontrol etmek için:

# Sistem bilgisini kontrol et
cat /etc/centos-release
# Çıktı: CentOS Stream release 9

# Mevcut depoları listele
dnf repolist

# Sistemi güncelle
dnf update -y

# Kernel sürümünü kontrol et
uname -r

Stream’de EPEL deposunu eklemek standart bir adım:

# EPEL deposunu ekle
dnf install -y epel-release

# CRB (CodeReady Builder) deposunu etkinleştir
dnf config-manager --set-enabled crb

# Depoları doğrula
dnf repolist enabled

Rocky Linux Nedir?

Rocky Linux, CentOS’un kurucularından Gregory Kurtzer tarafından “CentOS’un olması gerektiği gibi” sloganıyla hayata geçirildi. RHEL ile %100 ikili uyumluluk hedefleniyor ve bu hedef büyük ölçüde başarıldı. Rocky, RHEL kaynak kodlarından downstream olarak derleniyor, tam da eski CentOS’un yaptığı gibi.

Rocky Linux’un arkasında güçlü bir topluluk ve kurumsal sponsor desteği var. AlmaLinux ile birlikte “post-CentOS döneminin” en güçlü iki alternatifi olarak öne çıkıyor. Özellikle eski CentOS 7/8 altyapılarını taşımak zorunda kalan sysadminler için Rocky, en az sürtünmeli geçiş yolu.

Rocky Linux Kurulumu Sonrası Temel Ayarlar

Rocky Linux kurulduktan hemen sonra yapmanız gereken temel yapılandırmalar:

# Sistem sürümünü doğrula
cat /etc/rocky-release
# Çıktı: Rocky Linux release 9.3 (Blue Onyx)

# EPEL ve PowerTools/CRB depolarını ekle
dnf install -y epel-release
dnf config-manager --set-enabled crb

# SELinux durumunu kontrol et
sestatus

# Firewall durumu
systemctl status firewalld

# Temel geliştirme araçlarını kur
dnf groupinstall -y "Development Tools"

Teknik Farklar: Gerçekte Ne Kadar Önemli?

Paket Stabilitesi ve Güncelleme Modeli

Bu, iki dağıtım arasındaki en kritik fark. Rocky Linux’ta bir paket versiyonu, o major sürümün ömrü boyunca (10 yıl) temelde sabit kalır. Güvenlik yamaları arka plana uygulanır ama version bump olmaz. Bu, özellikle ISV (Independent Software Vendor) sertifikasyonları için hayati önem taşır.

CentOS Stream’de ise paket versiyonları RHEL’in geliştirme döngüsüne göre güncellenebilir. Bir gün Python 3.11 varken birkaç ay sonra 3.12 gelebilir. Kernel minor versiyonları sürekli ilerler.

İki sistemdeki kernel takibini karşılaştıralım:

# Mevcut ve yüklü kernel sürümlerini listele
rpm -q kernel --qf "%{VERSION}-%{RELEASE}n" | sort -V

# Stream'de kernel güncellemelerini takip et
dnf updateinfo list security kernel*

# Rocky'de aynı komut daha az sürpriz içerir
dnf updateinfo list all | grep kernel

RHEL Uyumluluk Testi

Uygulamanızın gerçekten RHEL uyumlu olup olmadığını test etmek için:

# RPM veritabanından paket imzalarını kontrol et
rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} (%{SIGPGP:pgpsig})n" | head -20

# Kritik kütüphanelerin versiyonlarını karşılaştır
rpm -q glibc openssl libstdc++ zlib

# Rocky'de RHEL uyumlu binary mi çalışıyor kontrol et
ldd /usr/bin/python3 | grep "not found"

Güvenlik Güncellemeleri Hızı

Paradoks gibi görünse de, güvenlik açısından iki sistem arasında önemli bir nüans var. CentOS Stream, RHEL’e girmeden önce güvenlik yamalarını alabilir. Yani teorik olarak Stream daha erken yamalı olabilir. Ama Rocky da RHEL kaynak kodlarını çok hızlı takip ediyor, genellikle 24-72 saat içinde.

# Güvenlik güncellemelerini filtrele
dnf updateinfo list security

# CVE bazlı güncelleme kontrol
dnf updateinfo list security | grep CVE-2024

# Bekleyen kritik güncellemeleri say
dnf updateinfo summary | grep -E "Security|Critical"

Gerçek Dünya Senaryoları: Hangisini Seçmelisiniz?

Senaryo 1: Legacy Kurumsal Uygulama Sunucusu

Diyelim ki 5 yıl önce RHEL 8 için sertifikalandırılmış bir ERP yazılımı çalıştırıyorsunuz. Vendor desteği hala aktif ama “RHEL 8/9 veya tam uyumlu bir klonda çalışır” diyor. Bu senaryoda Rocky Linux tartışmasız kazanır.

# Rocky'de vendor uyumluluk kontrolü
# Oracle DB gibi RHEL bağımlı kurulumlar için
cat /etc/os-release | grep -E "ID|VERSION"
# Rocky bu çıktıyı RHEL ile uyumlu şekilde sunar

# Bazı kurulumlar /etc/redhat-release okur
cat /etc/redhat-release
# Rocky Linux release 9.3 (Blue Onyx)
# Kurulumcu bunu RHEL olarak algılayabilir

# Gerekirse compatibility layer
# oracle-database-preinstall-21c gibi paketler Rocky'de direkt çalışır
dnf install -y oracle-database-preinstall-21c

Senaryo 2: CI/CD Pipeline ve Geliştirme Ortamı

Bir yazılım şirketinin geliştirme altyapısını yönetiyorsunuz. Geliştiriciler en güncel araçları istiyor, derleme ortamlarınızın sürekli güncel kalması gerekiyor ve üretimde RHEL koşmak zorunda değilsiniz. Bu durumda CentOS Stream daha mantıklı.

# Stream'de en güncel toolchain'i kur
dnf install -y gcc-toolset-13

# GCC Toolset'i etkinleştir
scl enable gcc-toolset-13 bash

# Versiyon kontrolü
gcc --version
# gcc (GCC) 13.x.x - Stream'de daha güncel

# Container build ortamı için Stream image kullan
# Dockerfile örneği
cat << 'EOF' > Dockerfile
FROM quay.io/centos/centos:stream9
RUN dnf install -y gcc make python3-devel && dnf clean all
WORKDIR /build
EOF

docker build -t myapp-builder .

Senaryo 3: Web Hosting Altyapısı

Onlarca müşteri sitesi barındıran bir hosting ortamı düşünelim. Uzun süreli stabilite, öngörülebilir paket versiyonları ve kolay yönetim önceliğiniz. Rocky burada da öne geçiyor.

# Rocky üzerinde LAMP stack kurulumu
dnf install -y httpd mariadb-server php php-fpm php-mysqlnd

# Servis versiyonlarını not al - bunlar 10 yıl boyunca temel olarak sabit kalacak
httpd -v
mysql --version
php --version

# SELinux ile web dizini izinleri
setsebool -P httpd_can_network_connect 1
setsebool -P httpd_use_nfs 1

# Firewall kuralları
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Senaryo 4: Kubernetes ve Container Altyapısı

Kubernetes cluster’ı için worker node işletim sistemi seçiyorsunuz. Her iki dağıtım da burada kullanılabilir, ama farklı nüanslar var.

# Container runtime kurulumu (her iki distro'da benzer)
dnf install -y containerd

# containerd yapılandırması
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml

# systemd cgroup driver ayarı
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

systemctl enable --now containerd

# Kubernetes reposunu ekle
cat << 'EOF' > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF

dnf install -y kubelet kubeadm kubectl
systemctl enable --now kubelet

Stream’in buradaki avantajı, daha güncel kernel özelliklerine (eBPF, cgroup v2 iyileştirmeleri) daha erken erişim sağlaması. Cilium gibi eBPF tabanlı CNI kullanıyorsanız bu önemli olabilir.

Geçiş Stratejileri: CentOS 7/8’den Taşıma

CentOS 7’den Rocky 8/9’a Geçiş

Bu, pek çok sistem yöneticisinin karşılaştığı gerçek bir senaryo. Doğrudan upgrade mümkün değil, migration script gerekiyor.

# Önce mevcut sistemi belgele
rpm -qa --qf "%{NAME}n" | sort > /root/packages-before.txt
systemctl list-units --type=service --state=running > /root/services-before.txt

# CentOS 8'den Rocky 8'e geçiş (migrate2rocky kullan)
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
chmod +x migrate2rocky.sh

# Dry-run ile önce test et
bash migrate2rocky.sh -r -V

# Gerçek migration
bash migrate2rocky.sh -r

# Sistem yeniden başlatıldıktan sonra doğrula
cat /etc/rocky-release
rpm -qa | grep rocky

Yapılandırma Yönetimi ile Toplu Geçiş

Ansible ile büyük ölçekli ortamlarda geçişi yönetmek için:

# Ansible inventory'de geçiş adaylarını grupla
cat << 'EOF' > migrate_rocky.yml
---
- name: CentOS to Rocky Migration
  hosts: centos_servers
  become: yes
  tasks:
    - name: Backup package list
      shell: rpm -qa > /root/packages-{{ ansible_date_time.date }}.txt

    - name: Download migration script
      get_url:
        url: https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
        dest: /root/migrate2rocky.sh
        mode: '0755'

    - name: Run migration
      shell: bash /root/migrate2rocky.sh -r
      register: migration_result

    - name: Reboot after migration
      reboot:
        reboot_timeout: 600

    - name: Verify Rocky release
      command: cat /etc/rocky-release
      register: release_check

    - name: Display result
      debug:
        msg: "{{ release_check.stdout }}"
EOF

ansible-playbook -i inventory migrate_rocky.yml --limit test_servers

Sistem İzleme ve Bakım Farklılıkları

DNF History ve Rollback

Her iki sistemde de DNF history kritik bir araç, ama Stream’de daha sık kullanmanız gerekebilir:

# DNF transaction geçmişini görüntüle
dnf history list

# Belirli bir transaction'ın detayları
dnf history info 15

# Sorunlu güncelleme sonrası geri al
dnf history undo 15

# Kernel rollback (Stream'de daha kritik)
# GRUB menüsünden eski kernel seç veya
grubby --default-kernel
grubby --set-default /boot/vmlinuz-<eski-versiyon>

# Sonraki boot için kernel seç
grub2-reboot 1

Otomatik Güvenlik Güncellemeleri

Rocky Linux’ta otomatik güvenlik güncellemelerini yapılandırmak:

# dnf-automatic kur
dnf install -y dnf-automatic

# Sadece güvenlik güncellemelerini otomatik uygula
cat << 'EOF' > /etc/dnf/automatic.conf
[commands]
upgrade_type = security
apply_updates = yes
random_sleep = 360

[emitters]
emit_via = stdio,email

[email]
email_from = root@localhost
email_to = [email protected]
email_host = localhost
EOF

# Servisi etkinleştir
systemctl enable --now dnf-automatic.timer

# Timer durumunu kontrol et
systemctl status dnf-automatic.timer

Lisans ve Destek Modeli

Rocky Linux, Rocky Enterprise Software Foundation (RESF) tarafından yönetiliyor. Topluluk desteği güçlü. CIQ (Gregory Kurtzer’in şirketi) ve diğer firmalar ticari destek sunuyor. Lisans açısından tamamen özgür ve ücretsiz, hatta RHEL ile ikili uyumluluk konusunda Red Hat’in getirdiği kısıtlamalar Rocky’yi pek etkilemedi çünkü onlar da bağımsız bir derleme zinciri kurdu.

CentOS Stream ise Red Hat tarafından yönetiliyor. Bu hem güçlü bir nokta (kurumsal kaynak, düzenli geliştirme) hem de potansiyel bir risk. Red Hat bir kez kural değiştirdi, tekrar değiştirebilir.

Karar Kriterleri: Özet Rehber

Tercih yaparken şu soruları kendinize sorun:

Rocky Linux tercih edin eğer:

  • ISV sertifikalı yazılım çalıştırıyorsanız (Oracle DB, SAP, vb.)
  • Eski CentOS altyapısını 1:1 taşıyorsanız
  • 10 yıllık paket stabilitesi kritikse
  • Uzun vadeli üretim sunucuları yönetiyorsanız
  • Müşteri SLA’larınızda versiyon sabitliği varsa

CentOS Stream tercih edin eğer:

  • Geliştirme ve CI/CD ortamı kuruyorsanız
  • En güncel Red Hat teknolojilerini takip etmek istiyorsanız
  • RHEL’e geçiş öncesi test ortamı olarak kullanacaksanız
  • Kısa ömürlü, hızlı döngülü ortamlar yönetiyorsanız
  • Red Hat ekosistemi ile sıkı entegrasyon gerekiyorsa

Her ikisi de işe yarar eğer:

  • Temel web sunucu altyapısı (LAMP/LEMP)
  • Container host ortamları
  • Genel amaçlı uygulama sunucuları

Sonuç

Dürüst olmak gerekirse, çoğu üretim ortamı için Rocky Linux daha güvenli bir seçim. Paket stabilitesi, tam RHEL uyumluluğu ve öngörülebilir güncelleme modeli, sistem yöneticilerinin gecenin 2’sinde kernel versiyonu değişti mi diye endişe etmemesi anlamına geliyor. Eski CentOS kullanıcıları için geçiş deneyimi de oldukça pürüzsüz.

CentOS Stream’i küçümsememek gerekiyor. Red Hat’in kendi iç araçlarını, Fedora’yı, RHEL’in geleceğini test ettiği bir platform. Upstream olmak bazen gerçekten avantaj. Bir geliştirme sunucusunda, bir CI/CD ortamında, “en yeni özellikler lazım” diyen ekiplerde CentOS Stream gayet mantıklı.

Pratikte önerim: Üretim sunucularında Rocky, geliştirme ve test ortamlarında CentOS Stream. Bu hibrit yaklaşım, hem stabilitenin hem de güncelliğin tadını çıkarmanızı sağlıyor. Migration baskısındaysanız ve eski CentOS kurulumlarınız varsa, Rocky Linux ile başlayıp sonrasında altyapınıza göre optimizasyon yapabilirsiniz. Her iki dağıtım da aktif geliştirilmeye devam ediyor ve Red Hat ekosisteminin ücretsiz, topluluğa açık yüzü olarak yerlerini koruyacak gibi görünüyor.

Yorum yapın