Linux'ta dnf, yum ve apt ile paket yönetimi
dnf, yum ve apt ile paket arama, kurma, güncelleme, depo yapılandırma ve rpm ile dpkg sorguları: her dağıtım ailesi için komut rehberi.
Paket yönetimi nedir, dağıtım aileleri nasıl ayrılır?
Linux'ta yazılım, derlenmiş dosyalar ile bağımlılık ve sürüm bilgisini taşıyan paketler halinde dağıtılır. Paket yöneticisi, paketi depodan indirir, gereken bağımlılıkları da çözer, kurar ve sonradan güncelleme veya kaldırma yapmanızı sağlar. Hangi dosyanın hangi pakete ait olduğunu da bilir; bu sayede sistemin bütünlüğü korunur.
Dağıtımlar paket biçimine göre başlıca ailelere ayrılır. Red Hat ailesi (RHEL, Rocky, AlmaLinux, Fedora) RPM paket biçimini ve üst düzey araç olarak dnf'i kullanır; yum, eski adıyla bilinen aracın komutu çoğu sistemde dnf'e yönlendirilmiş durumdadır ve komutlar büyük ölçüde aynıdır. Debian ailesi (Debian, Ubuntu) ise .deb biçimini, alt düzey dpkg ve üst düzey apt araçlarını kullanır.
Alt düzey araçlar (rpm ve dpkg) tek bir paket dosyasını kurar ancak bağımlılığı çözmez; üst düzey araçlar (dnf ve apt) depoları kullanıp bağımlılıkları otomatik halleder. Günlük işte neredeyse her zaman üst düzey araç, sorgulama ve sorun giderme için ise alt düzey araç tercih edilir.
dnf ile temel işlemler
Red Hat ailesinde sık kullanılan komutlar:
- dnf search nginx : depoda paket arar.
- dnf info nginx : sürüm, depo ve açıklama gösterir.
- dnf install nginx : paketi bağımlılıklarıyla kurar.
- dnf update (ya da dnf upgrade) : tüm paketleri ya da belirtilen paketi günceller.
- dnf remove nginx : paketi kaldırır; yalnız onun getirdiği, artık gereksiz bağımlılıkları dnf autoremove ile temizlersiniz.
- dnf provides /usr/sbin/nginx : bir dosyanın hangi pakette olduğunu bulur; "bu komut yok" hatasında hangi paketi kurmanız gerektiğini gösterir.
- dnf history : yapılan işlemleri listeler; dnf history undo ile bir işlemi geri almayı deneyebilirsiniz.
- dnf repolist : etkin depoları gösterir.
Her işlemde önizlemeyi okuyun. dnf bağımlılıkla birlikte nelerin kurulacağını ya da kaldırılacağını listeler; kaldırma işleminde beklemediğiniz paketler listede çıkıyorsa durup düşünmeniz gerekir. Betiklerde -y bayrağı onayı atlar; elle yapılan işlerde bu bayrağı kullanmamak güvenli alışkanlıktır.
Grup kurulumları için dnf group list ve dnf group install komutları, bir amaca yönelik paket kümelerini birlikte kurar.
Depo (repository) yapılandırması
Paketlerin nereden geleceğini depo tanımları belirler. Red Hat ailesinde bu tanımlar /etc/yum.repos.d dizinindeki .repo dosyalarındadır. Her dosyada depo adı, taban adresi (ya da ayna listesi), etkin olup olmadığı ve imza doğrulama ayarları bulunur.
Bir depo eklemek için ya doğrudan .repo dosyası yazarsınız ya da dnf config-manager aracını kullanırsınız. imza doğrulamasını (gpgcheck) kapatmak, yalnızca depoya tamamen güvenildiğinde ve geçici olarak düşünülmelidir; açık bırakmak yazılım tedarik zincirinin temel güvencesidir. Resmî ek paket havuzları (EPEL gibi) ayrı depo olarak etkinleştirilir.
Debian ailesinde karşılığı /etc/apt/sources.list ve /etc/apt/sources.list.d dizinidir. Üçüncü taraf depo eklerken imza anahtarını da eklemeniz gerekir; anahtar yönetimi sürüme göre değiştiğinden dağıtımın güncel dokümantasyonuna bakın.
Kurumsal ortamlarda genellikle yerel bir ayna ya da depo yöneticisi kullanılır: sunucular doğrudan internete değil kurum içi depoya bağlanır. Böylece sürümler kontrollü yayılır ve çevrimdışı sunucular da güncellenebilir.
apt ile Debian ve Ubuntu'da aynı işler
Debian ailesinde komutlar benzer ama sıra önemlidir:
- apt update : depolardaki paket listesini yeniler; hiçbir paketi kurmaz veya güncellemez.
- apt upgrade : kurulu paketleri, listedeki yeni sürümlere günceller.
- apt install nginx : paketi bağımlılıklarıyla kurar.
- apt remove nginx : paketi kaldırır, yapılandırma dosyaları kalır; apt purge yapılandırmayı da siler.
- apt search ve apt show : arama ve ayrıntı sorgusu.
- apt list --upgradable : güncellenebilir paketleri listeler.
- apt autoremove : artık gerekmeyen bağımlılıkları temizler.
En sık hata, apt update çalıştırmadan install yapmaktır; eski liste yüzünden "paket bulunamadı" ya da eski sürüm kurulumu görülür. dnf'te ise liste metaverisi otomatik yenilenir, bu fark aileler arasında geçiş yapanları şaşırtır.
Bir paketin güncellenmesini engellemek isterseniz Debian'da apt-mark hold, Red Hat ailesinde versionlock eklentisi kullanılır. Bu kilitleri not edin: unutulan bir kilit, güvenlik güncellemesini aylarca engelleyebilir.
rpm ve dpkg ile sorgulama
Alt düzey araçlar sorun giderirken değerlidir. Red Hat ailesinde rpm -qa kurulu tüm paketleri, rpm -qi paket bilgisini, rpm -ql paketin kurduğu dosyaları, rpm -qf /yol/dosya ise bir dosyanın hangi pakete ait olduğunu verir. rpm -V paket, dosyaların kurulumdan sonra değişip değişmediğini doğrular; kurcalama şüphesinde ya da yapılandırma sapması araştırırken kullanışlıdır.
Debian ailesinde karşılıkları dpkg -l (listele), dpkg -L paket (dosyaları göster) ve dpkg -S /yol/dosya (dosya hangi pakette) komutlarıdır.
Elde yalnızca bir .rpm ya da .deb dosyası varsa dnf install ./paket.rpm veya apt install ./paket.deb biçimi, dosyayı kurarken bağımlılıkları depodan çözer; doğrudan rpm -i veya dpkg -i kullanırsanız bağımlılık eksikliği hatası alabilirsiniz. Kurulum öncesinde paketin kaynağına ve imzasına güvendiğinizden emin olun; bilinmeyen kaynaktan paket kurmak sistemi riske atar.
Güncelleme stratejisi ve sorun giderme
Üretim sunucularında paketleri tümüyle güncellemek yerine önce test ortamında denemek ve güvenlik güncellemelerini ayrı ele almak yaygın uygulamadır. dnf, yalnızca güvenlik düzeltmelerini uygulamak için seçenekler sunar; ilgili özelliklerin adı ve davranışı sürümle değiştiğinden dağıtımın dokümantasyonunu kontrol edin. Çekirdek güncellemesi sonrası yeniden başlatma gerekir; dnf needs-restarting aracı hangi servislerin yeniden başlatılması gerektiğini söyler.
Yaygın sorunlar ve ilk bakılacaklar: • Bağımlılık çakışması: dnf ya da apt hatasını okuyun, çakışan paketi ve gereken sürümü bulun. • İmza hatası: depo anahtarı eksik veya süresi geçmiş olabilir. • Depoya ulaşılamıyor: ağ, DNS ve proxy ayarlarını kontrol edin. • Kilit hatası: başka bir paket işlemi sürüyor; bitirilmesini bekleyin ya da güvenle tamamlandığından emin olarak kilidi inceleyin. • Yarım kalan işlem: Debian'da dpkg --configure -a, Red Hat ailesinde dnf history ve gerekirse temizlik komutları kullanılır.
Önbelleği temizlemek (dnf clean all) bayat metaveriyi atar. Bu adım, bir depo içeriği değiştiğinde ya da "paket bulunamadı" hatasında hızlı bir ilk denemedir.
Bu beceriyi Mindset programlarında nerede çalışırsınız?
RHCSA Sertifikasyon Hazırlık programının Yazılım Yönetimi, Konteyner ve Kurtarma modülü Red Hat ailesindeki depo yapılandırması ve paket işlemlerini sınav senaryolarıyla çalıştırır. Linux Foundation Certified System Administrator (LFCS) Hazırlık programı her iki dağıtım ailesini de çalışan sistem yöneticileri için daha geniş bir bakış sunar. Karma dağıtım ortamında çalışan BT operasyon ekipleri için her ailenin araçlarını birlikte bilmek günlük iş yükünü doğrudan etkiler.
İlgili Mindset programı
RHCSA Sertifikasyon Hazırlık
Sık sorulan sorular
yum ile dnf arasındaki fark nedir?
dnf, yum'un yerini alan yeni nesil araçtır; bağımlılık çözümü ve performans iyileştirmeleri getirir. Yeni Red Hat tabanlı sistemlerde yum komutu genellikle dnf'e yönlendirilir ve temel komutlar aynı kalır. Betikleriniz eski yum sözdizimini kullanıyorsa çoğunlukla değişiklik gerektirmeden çalışır.
apt update ile apt upgrade neden ayrı komutlar?
apt update yalnızca depolardaki paket listesini yeniler, hiçbir şeyi kurmaz. apt upgrade ise bu güncel listeye bakarak kurulu paketleri günceller. Önce update çalıştırmadan install veya upgrade yaparsanız eski liste yüzünden eksik ya da eski sürüm bulabilirsiniz.
Bir komutun hangi paketle geldiğini nasıl bulurum?
Red Hat ailesinde dnf provides ile dosya yolunu aratın, kurulu bir dosya için rpm -qf kullanın. Debian ailesinde dpkg -S kurulu dosyalar için, apt-file ise depodaki dosyalar için kullanılır. Komut eksikse bu sorgu hangi paketi kurmanız gerektiğini söyler.
Paket kaldırınca bağımlılıklar da gider mi?
dnf remove, kaldırdığınız pakete bağımlı olan paketleri de listeler ve onay ister. Kaldırılan paketin kendi getirdiği ama artık kullanılmayan bağımlılıklar için autoremove gerekir. Debian'da apt remove yapılandırmayı bırakır, purge siler. Önizlemeyi okumadan onaylamak beklenmedik kayıplara yol açabilir.
İlgili rehberler
İlgili eğitimler
Kategori: DevOps ve Bulut Teknolojileri