15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
09.10.2024

DNF’yi RHEL/CentOS 7’ye Yükleme: Eksiksiz Teknik Kılavuz

DNF (Dandified YUM), RPM tabanlı Linux dağıtımları için YUM’un tam bir yedeği olarak tasarlanmış yeni nesil paket yöneticisidir. `libsolv` kütüphanesi aracılığıyla daha hızlı bağımlılık çözümlemesi, daha düşük bellek tüketimi ve kararlı bir Python API sunar. RHEL/CentOS 7 varsayılan olarak YUM ile gelirken, DNF EPEL deposu aracılığıyla tam olarak kurulabilir ve aynı sistemde YUM ile paralel olarak veya YUM’un şeffaf bir yedeği olarak çalışabilir.

Bu kılavuz, kurulum sürecinin tamamını adım adım açıklar, YUM ile DNF arasındaki mimari farklılıkları ele alır, gerçek dünya senaryolarını kapsar ve üretime hazır bir komut referansı sunar.

DNF’nin RHEL/CentOS 7’de YUM’dan Neden Daha İyi Performans Gösterdiği

Terminale dokunmadan önce, yükseltmenin *neden* önemli olduğunu anlamak, özellikle paket yönetimi güvenilirliğinin kritik olduğu uzun süredir çalışan bir VPS Hosting ortamında bilinçli bir karar vermenize yardımcı olur.

Temel Mimari Farklılıklar

YUM, büyük bağımlılık ağaçlarında iyi belgelenmiş performans sorunları olan Python tabanlı bir bağımlılık çözümleyicisine dayanır. DNF bu çözümleyicinin yerini, başlangıçta SUSE tarafından geliştirilen SAT-çözücü tabanlı bir bağımlılık çözümleme motoru olan `libsolv` ile alır. Pratik sonuçlar önemlidir:

  • Bağımlılık çözümleme hızı: DNF, karmaşık bağımlılık zincirlerini YUM’un gerektirdiği sürenin çok daha kısa bir bölümünde çözer; bu durum özellikle büyük paket kümelerindeki çakışmaların çözümünde belirgindir.
  • Bellek kullanımı: YUM, tüm depo meta verilerini belleğe yükler. DNF ise geç yükleme kullanır ve daha agresif önbellekleme yaparak tepe RAM kullanımını azaltır.
  • API kararlılığı: YUM’un Python API’si küçük sürümler arasında öngörülemeyen şekillerde değişti. DNF, eklenti yazarlarının güvenebileceği belgelenmiş, sürümlü bir Python API sunar.
  • Eklenti mimarisi: DNF temiz bir kanca tabanlı eklenti sistemi kullanır. YUM eklentileri ise gevşek bağlantı nedeniyle sıklıkla birbirleriyle çakışır.
  • İşlem geçmişi: DNF daha zengin bir işlem geçmişi veritabanı tutar; bu da geri almaları ve denetimleri daha hassas hale getirir.

YUM ile DNF: Özellik Karşılaştırması

ÖzellikYUMDNF
Bağımlılık çözümleyiciPython tabanlı (dahili)`libsolv` SAT çözümleyici
Bellek kullanımıYüksek (tam meta veri yüklemesi)Düşük (geç yükleme + agresif önbellek)
Python APISürümler arası kararsızKararlı, sürümlü API
Eklenti sistemiGevşek bağlantılı, çakışmaya yatkınKanca tabanlı, izole
İşlem geri almaSınırlıGeri alma desteğiyle tam geçmiş
Paralel indirmeHayırEvet (`librepo` aracılığıyla)
Zayıf bağımlılıklarDesteklenmiyorDestekleniyor (`Recommends`, `Suggests`)
Modül akışlarıDesteklenmiyorDestekleniyor (DNF 4+)
Bakım durumuKullanım ömrü sona erdiAktif olarak bakımı yapılıyor
RHEL/CentOS’ta varsayılan7 ve öncesi8 ve sonrası

Ön Koşullar

Devam etmeden önce aşağıdakileri doğrulayın:

  • Çalışan bir RHEL 7 veya CentOS 7 örneği (bare metal, VM veya bulut VPS).
  • Root veya sudo erişimi — tüm kurulum komutları yükseltilmiş ayrıcalıklar gerektirir.
  • Aktif internet bağlantısı — EPEL deposuna erişilebilir olması gerekir.
  • DNF, bağımlılıkları ve depo meta veri önbelleği için en az 500 MB boş disk alanı.

Bir Dedicated Server üzerinde minimal CentOS 7 kurulumu çalıştırıyorsanız, sıkıştırılmış görüntülerde zaman zaman bulunmadığından `curl` ve `wget` öğelerinin mevcut olduğunu doğrulayın.

Adım 1: Mevcut Sistem Paketlerini Güncelleyin

Yeni yazılım yüklemeden önce paket veritabanınızı senkronize etmek, sürüm çakışmalarını önler ve EPEL sürüm paketinin mevcut RPM veritabanı durumunuza karşı temiz bir şekilde yüklenmesini sağlar.

“`bash

sudo yum update -y

“`

Bu komutun işlevi: Halihazırda yüklü paketler için mevcut tüm güncellemeleri indirir ve uygular, depo meta verilerini yeniler ve RPM işlem kilidini yeniden oluşturur. Üretim sisteminde bunu bir bakım penceresi sırasında planlayın — çekirdek güncellemeleri etkili olması için yeniden başlatma gerektirir.

Uç durum: `yum update` bir `Multilib version problems` hatasıyla başarısız olursa, tek seferlik geçici çözüm olarak `sudo yum update –setopt=protected_multilib=false -y` komutunu çalıştırın, ardından devam etmeden önce çakışan paketleri araştırın.

Adım 2: EPEL Deposunu Etkinleştirin

DNF, varsayılan CentOS/RHEL 7 temel depolarında mevcut değildir. Fedora projesi tarafından yönetilen Extra Packages for Enterprise Linux (EPEL) deposu bunu sağlar.

“`bash

sudo yum install epel-release -y

“`

Deponun etkin olduğunu doğrulayın:

“`bash

yum repolist | grep epel

“`

Beklenen çıktı, sıfırdan fazla paket sayısıyla (genellikle 13.000+) `epel/x86_64` göstermelidir. Depo devre dışı görünüyorsa zorla etkinleştirin:

“`bash

sudo yum-config-manager –enable epel

“`

Güvenlik notu: EPEL paketleri Fedora altyapı ekibi tarafından derlenir ve imzalanır. `epel-release` paketi GPG anahtarını otomatik olarak yükler. Bu depodan gelen paketlere güvenmeden önce anahtar parmak izini resmi Fedora anahtar sunucusuna karşı doğrulayabilirsiniz — bu adım, güçlendirilmiş üretim sistemlerinde değer taşır.

Proxy veya güvenlik duvarının arkasında mısınız? Sunucunuz Fedora yansılarına doğrudan erişemiyorsa, proxy ayarlarınızla `/etc/yum.conf` yapılandırın:

“`ini

proxy=http://your-proxy-server:port

proxy_username=user

proxy_password=pass

“`

Adım 3: DNF’yi Yükleyin

EPEL etkin durumdayken, DNF’yi ve temel bağımlılıklarını tek bir komutla yükleyin:

“`bash

sudo yum install dnf -y

“`

Bu komut, otomatik bağımlılıklar olarak `dnf`, `dnf-data`, `python-dnf`, `libcomps`, `librepo` ve `libsolv` öğelerini çeker. Toplam indirme boyutu, halihazırda yüklü olanlara bağlı olarak genellikle 3–8 MB arasındadır.

Yüklenenler:

  • `dnf` — ana ikili dosya ve komut satırı arayüzü
  • `libsolv` — SAT tabanlı bağımlılık çözümleyici
  • `librepo` — paralel indirme kütüphanesi
  • `libcomps` — paket grupları için comps XML ayrıştırıcısı
  • `python-dnf` — Python bağlamaları ve DNF çekirdek kütüphanesi

Adım 4: Kurulumu Doğrulayın

DNF’nin çalışır durumda olduğunu onaylayın ve sürümünü kontrol edin:

“`bash

dnf –version

“`

Başarılı bir kurulum aşağıdakine benzer bir çıktı üretir:

“`

4.0.9.2

Installed: dnf-0:4.0.9.2-1.el7.noarch at …

Built : CentOS BuildSystem <http://bugs.centos.org> at …

“`

DNF tarafından görülen mevcut depoları listeleyerek daha derin bir sağlık kontrolü yapın:

“`bash

dnf repolist

“`

Çıktı, `yum repolist` komutunun gösterdikleriyle örtüşmeli; bu, DNF’nin mevcut depo yapılandırmanızı `/etc/yum.repos.d/` konumundan doğru şekilde devraldığını doğrular.

Önemli: CentOS 7’deki DNF, YUM ile aynı depo `.repo` dosyalarını okur. Herhangi bir depo geçişi gerekmez. Her iki araç da `/etc/yum.repos.d/` ve `/var/cache/` öğelerini paylaşır (ayrı alt dizinlerde).

Adım 5: Temel DNF Komut Referansı

DNF, kasıtlı olarak YUM ile komut uyumludur. Aşağıdaki tablo en sık kullanacağınız işlemleri kapsar:

GörevDNF Komutu
Tüm paketleri güncelle`sudo dnf update -y`
Paket yükle`sudo dnf install <package> -y`
Paket kaldır`sudo dnf remove <package> -y`
Paket ara`dnf search <keyword>`
Paket bilgisi al`dnf info <package>`
Yüklü paketleri listele`dnf list installed`
Mevcut güncellemeleri listele`dnf check-update`
Önbelleğe alınan meta verileri temizle`sudo dnf clean all`
İşlem geçmişini görüntüle`dnf history`
Bir işlemi geri al`sudo dnf history undo <id>`
Paket grubu yükle`sudo dnf groupinstall "<group>"`
Depoyu etkinleştir`sudo dnf config-manager –enable <repo>`

DNF İşlem Geçmişi ve Geri Alma

Bu, DNF’nin operasyonel açıdan en değerli özelliklerinden biri olup YUM’un yetersiz kaldığı bir alandır. Her yükleme, güncelleme veya kaldırma işlemi `/var/lib/dnf/history/` konumuna kaydedilir. Son işlemleri incelemek için:

“`bash

dnf history list

“`

Belirli bir işlemde tam olarak neyin değiştiğini görmek için:

“`bash

dnf history info <transaction-id>

“`

Bir işlemi geri almak için (örneğin, hatalı bir güncellemeyi geri almak):

“`bash

sudo dnf history undo <transaction-id>

“`

Bu özellik, bir paket güncellemesinin kontrol paneli bağımlılıklarıyla çakışabileceği cPanel’li VPS ortamlarında özellikle kullanışlıdır.

DNF Yapılandırma Dosyası

DNF’nin genel yapılandırması `/etc/dnf/dnf.conf` konumunda bulunur. Üretim kullanımı için temel ayarlama parametreleri:

“`ini

[main]

gpgcheck=1

installonly_limit=3

clean_requirements_on_remove=True

best=True

skip_if_unavailable=False

“`

  • `installonly_limit=3` — yalnızca son 3 çekirdek sürümünü tutar; `/boot` bölümünün dolmasını önler.
  • `clean_requirements_on_remove=True` — paket kaldırma işleminde sahipsiz bağımlılıkları otomatik olarak kaldırır.
  • `best=True` — her zaman mevcut en son sürümü yükler; sessizce düşürme yapmak yerine hata verir.

Adım 6: DNF’yi Varsayılan Paket Yöneticisi Olarak Yapılandırma

RHEL/CentOS 7’de YUM sistem varsayılanı olmaya devam eder. DNF’yi birincil arayüzünüz yapmak için iki seçeneğiniz vardır.

Seçenek A: Kabuk Takma Adı (Kullanıcı Düzeyi, Yıkıcı Olmayan)

Aşağıdakini `~/.bashrc` (mevcut kullanıcı için) veya `/etc/bashrc` (sistem genelinde) dosyasına ekleyin:

“`bash

alias yum='dnf'

“`

Hemen uygulayın:

“`bash

source ~/.bashrc

“`

Sınırlama: Bu takma ad yalnızca etkileşimli kabuk oturumları için geçerlidir. `yum` komutunu mutlak yoluyla (`/usr/bin/yum`) doğrudan çağıran veya farklı kullanıcılar altında çalışan (örneğin, cron işleri, systemd birimleri) betikler etkilenmez.

Seçenek B: Sembolik Bağlantı (Sistem Düzeyi)

Daha kapsamlı bir değiştirme için, `yum` ikilisini `dnf` konumuna yönlendiren bir sembolik bağlantı oluşturun:

“`bash

sudo mv /usr/bin/yum /usr/bin/yum.bak

sudo ln -s /usr/bin/dnf /usr/bin/yum

“`

Kritik uyarı: Bu yaklaşım tüm kullanıcıları ve tüm sistem genelindeki betikleri etkiler. Önce üretim dışı bir ortamda kapsamlı testler yapın. Bazı sistem betikleri ve üçüncü taraf araçlar (belirli cPanel/WHM bileşenleri dahil) `/usr/bin/yum` komutunu açıkça çağırır ve ikili dosya değiştirilirse beklenmedik şekilde davranabilir. Yukarıda gösterildiği gibi her zaman orijinal ikili dosyayı yedekleyin.

Seçenek C: YUM Eklentisi Olarak DNF (Sunucular için Önerilen)

Üretim sunucuları için en temiz yaklaşım, YUM’u olduğu gibi bırakmak ve kendi iş akışlarınızda ve otomasyon betiklerinizde yalnızca `dnf` komutunu açıkça kullanmaktır. Bu, sistem araçlarını bozma riskini ortadan kaldırırken DNF’nin tüm özelliklerine tam erişim sağlar.

Pratik Tuzaklar ve Uç Durumlar

Bunlar gerçek dağıtımlarda ortaya çıkan ve temel eğitimlerde nadiren ele alınan sorunlardır.

GPG anahtarı çakışmaları: Birden fazla üçüncü taraf deposundan paket yüklerseniz, DNF’nin daha katı GPG uygulaması (`gpgcheck=1` olduğunda) YUM’un daha önce sessizce kabul ettiği paketleri reddedebilir. Depo GPG anahtarlarını her zaman `sudo rpm –import <key-url>` komutuyla açıkça içe aktarın.

Eklenti uyumsuzluğu: Bazı YUM eklentilerinin (örneğin `yum-plugin-fastestmirror`) doğrudan DNF karşılığı yoktur veya farklı davranır. DNF’nin kendi `fastestmirror` eklentisi (`dnf-plugin-fastestmirror`) vardır ancak varsayılan olarak etkin değildir. `sudo dnf install python3-dnf-plugin-fastestmirror` komutuyla yükleyin.

Önbellek konumu farklılığı: YUM meta verileri `/var/cache/yum/` konumunda önbelleğe alır. DNF ise `/var/cache/dnf/` konumunu kullanır. Disk alanı kısıtlıysa her iki önbellek bir arada bulunabilir ve önemli miktarda alan tüketebilir. Alan kazanmak için `sudo dnf clean all` ve `sudo yum clean all` komutlarını bağımsız olarak çalıştırın.

RHEL abonelik yönetimi: Kayıtlı RHEL 7 sistemlerinde (CentOS’un aksine), `subscription-manager` eklentisi YUM ile entegre olur. RHEL 7’deki DNF, ek yapılandırma olmadan abonelikle korunan depolara tam olarak uymayabilir. Geçiş yaptıktan sonra `subscription-manager repos –list-enabled` komutuyla doğrulayın.

Python sürümü hassasiyeti: CentOS 7’deki DNF, Python 2 bağlamalarını (`python-dnf`) kullanır. Sisteminizde Python 3’e yükseltme yaptıysanız, `python-dnf` bağımlılık zincirini istemeden bozmadığınızdan emin olun. RHEL 8+ üzerindeki DNF 4+, Python 3’ü yerel olarak kullanır.

CentOS 7 Sonrası Geçiş Yolunuzu Planlamak

CentOS 7, 30 Haziran 2024 tarihinde kullanım ömrünün sonuna ulaştı. DNF’yi yüklemek faydalı bir operasyonel iyileştirmedir, ancak kullanım ömrü sona ermiş bir dağıtımın temel güvenlik durumunu değiştirmez. Hâlâ CentOS 7 iş yükleri çalıştırıyorsanız, AlmaLinux 8/9, Rocky Linux 8/9 veya RHEL 8/9’a geçiş planı yol haritanızda yer almalıdır. Bu dağıtımların tümü DNF’yi yerel olarak kullanır; bu da şimdi edindiğiniz deneyimi doğrudan aktarılabilir kılar.

Eski altyapı üzerinde birden fazla hizmet çalıştıran ekipler için VPS Kontrol Panelleri, geçiş penceresi süresince paralel ortamların yönetimini önemli ölçüde basitleştirebilir.

İş yükleriniz web barındırma yığınlarını içeriyorsa, modern bir dağıtıma geçiş aynı zamanda Certbot ve ACME aracılığıyla SSL Sertifikaları otomasyonundan tam anlamıyla yararlanmanızı sağlar; bu özellik RHEL 8+ ve türevlerinde çok daha iyi desteklenmektedir.

Hızlı Referans Karar Matrisi

Temiz ve üretime hazır bir kurulumu doğrulamak için kurulum öncesinde ve sonrasında bu kontrol listesini kullanın:

  • [ ] EPEL yüklenmeden önce `yum update -y` hatasız tamamlandı
  • [ ] EPEL deposu `yum repolist | grep epel` aracılığıyla etkin olarak doğrulandı
  • [ ] `dnf –version` geçerli bir sürüm dizesi döndürüyor
  • [ ] `dnf repolist` çıktısı `yum repolist` çıktısıyla eşleşiyor
  • [ ] `/etc/dnf/dnf.conf` ortamınıza göre gözden geçirildi ve ayarlandı
  • [ ] `installonly_limit` bölümünün dolmasını önlemek için `/boot` ayarlandı
  • [ ] Takma ad, sembolik bağlantı veya bir arada kullanım stratejisi hakkında karar verildi
  • [ ] Sembolik bağlantı yaklaşımı kullanılıyorsa YUM ikilisi yedeklendi
  • [ ] Cron işleri ve otomasyon betikleri sabit kodlanmış `yum` yolları açısından denetlendi
  • [ ] CentOS 7 kullanım ömrü sonu geçiş zaman çizelgesi belgelendi

SSS

DNF ve YUM aynı CentOS 7 sisteminde çakışma olmadan bir arada bulunabilir mi?

Evet. Her iki araç da `/etc/yum.repos.d/` konumundan okur ve ayrı önbellek dizinleri tutar. RPM veritabanını (`/var/lib/rpm`) paylaşırlar; dolayısıyla biri tarafından tamamlanan bir işlem diğeri tarafından anında görülebilir. Her ikisini aynı anda çalıştırmak (örneğin, iki eşzamanlı yükleme) RPM kilit çakışmasına neden olur, ancak sıralı kullanım tamamen güvenlidir.

CentOS 7’ye DNF yüklemek mevcut YUM eklentilerini bozar mı?

Hayır. DNF bağımsız bir ikili dosya olarak yüklenir ve YUM kurulumunu değiştirmez. Mevcut YUM eklentileriniz olduğu gibi kalır. Ancak DNF, YUM eklentilerini yüklemez — belirli YUM eklentilerine güveniyorsanız, DNF karşılıklarını ayrıca bulup yüklemeniz gerekir.

CentOS 7’deki DNF, DNF modüllerini (modül akışlarını) destekliyor mu?

Hayır. DNF modül akışları, DNF 4 ve RHEL/CentOS 8’de tanıtılan bir özelliktir. CentOS 7 için EPEL aracılığıyla sunulan DNF sürümü DNF 4.x olmakla birlikte, modül akışı desteği CentOS 7’de bulunmayan AppStream depo altyapısını gerektirir.

Neden `dnf update` komutu bazen aynı sistemde `yum update` komutundan farklı sonuçlar üretir?

DNF’nin `libsolv` çözümleyicisi daha katı bağımlılık mantığı uygular ve sürüm seçimlerini YUM’un dahili çözümleyicisinden farklı şekilde çözebilir. Çoğu durumda sonuç aynıdır, ancak karmaşık veya çakışan bağımlılıkların bulunduğu ortamlarda DNF farklı paket sürümleri seçebilir ya da YUM’un sessizce izin verdiği işlemleri reddedebilir. Bu bir hata değil, bir özelliktir — DNF’nin davranışı daha öngörülebilir ve denetlenebilirdir.

Üretim web uygulamalarına ev sahipliği yapan bir CentOS 7 sunucusunda DNF kullanmak güvenli midir?

Evet; ancak YUM ikilisini değiştirmek yerine bir arada kullanım yaklaşımını (YUM’u olduğu gibi bırakın, DNF’yi açıkça kullanın) tercih etmeniz koşuluyla. Birincil iş akışınızı DNF’ye geçirmeden önce sunucunuzdaki herhangi bir kontrol paneli yazılımının veya dağıtım otomasyonunun YUM davranışı hakkında sabit kodlanmış varsayımları olmadığını doğrulayın.

15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın