
Linux’ta Paket Yöneticileri
Hazırlayan: Sedefnaz Durukan Temel Kavramlar 1. Paket Yöneticisi (package manager) Paket yöneticisi, sistemdeki yazılımların ‘kurulumunu, kaldırılmasını, güncellenmesini ve yönetimini’ sağlayan araçtır. İşlevleri şu şekilde sıralanabilir: Uygun depolardan paket indirir, bağımlılıkları çözer, paketleri doğru dizinlere yerleştirir, kurulum sonrası yapılandırmaları yapar, güncelleme ve kaldırma işlemlerini yönetir. 2. Paket (package) Bir “paket”, Linux’ta bir yazılımın (program, araç, kütüphane, sürücü vb.) tüm bileşenlerini içeren sıkıştırılmış bir dosyadır. İçeriği şunlardan oluşur; 3. Depo(repository) Depolar, paketlerin uzaktan indirildiği sunuculardır. Bir anlamda Linux’un “uygulama mağazaları”dır. Özellikleri: 4. Bağımlılık (dependency) Bir yazılımın çalışması için gerekli olan başka yazılımlar veya kütüphanelerdir. Linux’ta çoğu yazılım, başka bir kütüphaneye bağlı olarak çalışır. !! Bağımlılık cehennemi (dependency hell): Bağımlılıkların çakışması veya sürüm uyumsuzluğu nedeniyle sistemin bozulması anlamına gelir. 5. Bağımlılık Çözümleyici (dependency resolver) Bir paketi kurarken veya kaldırırken, diğer paketlerin etkilenip etkilenmeyeceğini analiz eder. 6. Konfigürasyon Dosyaları (configuration files) Paket yöneticisinin hangi depoları kullanacağını, nasıl davranacağını belirleyen dosyalardır. Kullanılan Paket Yöneticileri İşletim sistemi paket yöneticileri Yazılım paket yöneticileri En Çok Bilinen Paket Yöneticileri “APT”, Debian tabanlı Linux dağıtımlarında kullanılan bir paket yönetim sistemidir. macOS için de “MacPorts”, “Homebrew” bilinen paket yöneticilerdir. JavaScript paketleri için “npm, yarn, bower” en çok bilinen paketlerden birkaçıdır. Paket Yöneticilerinin Temel Özellikleri Bir paket yöneticisi öncelikle paket edinme sürecinde paketin doğruluğunu ve bütünlüğünü kontrol etmelidir. Bu süreç checksum kontrolü olarak ifade edilir. Sonrasında, paketin kaynağının kimlik doğrulamasını yapabilmelidir. Bu tür doğrulama süreçlerinde sayısal imzalar kullanılmaktadır. Güncelleme, güncelleme takibi ve güncellemelerin depo üzerinden gerçekleştirilmesi (yine kaynak doğrulama ve paket kontrolü ile birlikte). Paketin ihtiyacı olan uygulamalar ve/veya diğer paketler ile birlikte kurulduğundan emin olmak için bağımlılık yönetimi yapmak. Paketlerin hataya sebebiyet vermeyecek şekilde yapılandırılması / kaldırılması. Kullanılan tüm bağımlılıkları / paketleri çeşitli bilgilerle (metadata) birlikte (name, description, version number, vendor, checksum, dependencies…) kayıt altında tutarlar (örneğin package.json bir local package database’dir) ve yeri geldiğinde indirme-güncelleme-kaldırma işlemlerini tek bir komutla uygularlar. Bir başka alanda tüm bağımlılıklar yerine bu dosyaların kullanılması yeterli olacaktır. Gerisini paket yöneticisi kendisi halletmektedir. Paket Yöneticilerinin Avantaj Ve Dezavantajları Genel Avantajlar: Genel Dezavantajlar Bilindik ailelere göre avantaj/dezavantaj APT (Debian, Ubuntu, Kali) Avantajları: Dezavatnajları: DNF/YUM (Red Hat, Fedora, CentOS) Avantajları: Dezavantajları: PACMAN (Arch, Manjaro) Avantajları: Dezavantajları: Zypper (openSUSE) Avantajları: Dezavantajları: Paket Yöneticilerinin Uygun Kullanıcı Tipleri Paket Yöneticisi Kullanıldığı Dağıtımlar Uygun Kullanıcı Tipi Neden Uygun Olduğu APT (Advanced Package Tool) Ubuntu, Debian, Linux Mint, Kali Yeni başlayan / ️ Orta seviye Kullanımı kolay, kararlı ve geniş depo desteği var. “apt install” ile her şey çözülür. DPKG (Debian Package Manager) Debian tabanlı sistemlerin çekirdeği Geliştiriciler Manuel kontrol imkânı sağlar, sistem düzeyinde paket yönetimi için uygundur. DNF / YUM Fedora, CentOS, RHEL Sistem yöneticileri / Orta seviye Kurumsal ortamlarda kararlıdır, güvenlik yamaları hızlı gelir. “Enterprise” odaklıdır. RPM (Red Hat Package Manager) Red Hat tabanlı tüm sistemler Geliştirici / Sistem yöneticisi Manuel kontrol sağlar, kurumsal üretim ortamlarında tercih edilir. PACMAN Arch Linux, Manjaro Deneysel kullanıcı / Geliştirici Rolling-release (sürekli güncel) yapı sunar, performans odaklıdır. Hızlı ama dikkat ister. Zypper openSUSE ️ Orta seviye / Sistem yöneticisi Güçlü bağımlılık çözümü, kararlılık ve yönetim araçlarıyla kurumsal sistemler için uygundur. Flatpak Tüm dağıtımlar Yeni başlayan / Geliştirici Her dağıtımda çalışır, güvenli (sandboxed) yapıdadır, yeni yazılım denemek için idealdir. Snap Ubuntu ve türevleri Yeni başlayan / Geliştirici Otomatik güncellemeli, bağımsız çalışır, terminal bilgisi az olanlar için kolay. AppImage Tüm dağıtımlar Yeni başlayan / Deneysel Kurulum gerektirmez, taşınabilir. Ancak güncelleme manuel yapılır. Paket Yöneticilerinin Bağlı Olduğu Aile Ve Dağıtımlar Aile Dağıtımlar Paket Yöneticisi Debian Ubuntu, Kali, Mint apt, dpkg Red Hat Fedora, CentOS dnf, rpm Arch Manjaro, EndeavourOS pacman openSUSE openSUSE Leap, Tumbleweed zypper Evrensel Her dağıtım flatpak, snap, AppImage Bazı Paket Yöneticilerinin Özelliklerinin Tablosu Özellik APT DNF Pacman Zypper Flatpak Paket uzantısı .deb .rpm .pkg.tar.zst .rpm .flatpak Depo tipi /etc/apt/sources.list /etc/yum.repos.d/ /etc/pacman.conf /etc/zypp/repos.d/ Uygulama tabanlı Bağımlılık çözümü Otomatik Otomatik Otomatik Otomatik İzole GUI desteği Synaptic GNOME Software Pamac YaST GNOME Software Hız Orta Orta Hızlı Orta Değişken Kaynakça