Linux’ta yazılım kurmak, bir dosya indirip çalıştırmaktan farklıdır. Paket yöneticisi yalnızca dosyaları kopyalamaz; bağımlılıkları çözer, imzaları doğrular, hangi dosyanın hangi pakete ait olduğunu kaydeder ve kaldırırken geriye ne bırakacağını bilir.
Depo modeli
Paketler tek tek indirilmez; depolardan gelir. Her depo, sunduğu paketlerin listesini ve sürümlerini içeren bir dizin dosyası yayımlar.
Sisteminiz bu dizini önbelleğe alır. apt update ya da dnf makecache komutunun yaptığı iş budur — paket kurmaz, yalnızca “dışarıda ne var” bilgisini tazeler.
Bu yüzden güncel olmayan bir önbellekle kurulum denemek “paket bulunamadı” hatası verir; paket vardır, sizin listeniz eskidir.
İki aile
Debian ailesi (Debian, Ubuntu) .deb paketleri ve apt kullanır. Alt katmanda dpkg bulunur; apt ise bağımlılık çözümü ve depo yönetimini ekler.
Red Hat ailesi (RHEL, Fedora, Rocky) .rpm paketleri ve dnf kullanır. Alt katmanda rpm vardır.
Komutlar farklıdır ama kavramlar aynıdır: depo, paket, bağımlılık, sürüm, imza. İki dağıtım arasında geçiş yaparken öğrenilmesi gereken şey mantık değil sözdizimidir.
Komutların karşılıklarını hatırlamak için komut çevirici aracına bakabilirsiniz.
Bağımlılık çözümü
Bir paket başka paketlere ihtiyaç duyabilir; onlar da başkalarına. Paket yöneticisinin asıl işi bu ağacı çözmektir.
İyi haber: bunu sizin için yapar. Kötü haber: her zaman istediğiniz gibi çözmeyebilir. Bir paketi kurmak, istemediğiniz bir başka paketin kaldırılmasını gerektirebilir.
Bu yüzden kurulum çıktısını okumak önemlidir. “Şunlar kaldırılacak” satırı, üretim sunucusunda körlemesine onaylanacak bir şey değildir. Özellikle otomatik yama süreçlerinde bu davranış açıkça sınırlanmalıdır.
Yama önceliğinin nasıl belirleneceği yama önceliklendirme rehberinde.
İmza doğrulama
Depo dizinleri ve paketler imzalıdır. Sisteminiz, güvendiği anahtarlarla bu imzaları doğrular; doğrulanmayan paket kurulmaz.
Bu, tedarik zinciri güvenliğinin temel katmanıdır. Bir saldırgan depo aynasını ele geçirse bile, imzalayamadığı bir paketi size kabul ettiremez.
Pratik sonuç: imza doğrulamayı atlayan bayraklar (--force, --nogpgcheck ve benzerleri) bir sorunu çözmek için değil, ertelemek için kullanılır. Üçüncü taraf bir depo eklerken de anahtarını doğru kaynaktan almak, deponun kendisini eklemek kadar önemlidir.
İmza ve özet kavramlarının genel çerçevesi simetrik ve asimetrik şifreleme yazısında.
Sürüm sabitleme
Üretim ortamlarında bazen bir paketin belirli bir sürümde kalması gerekir — uygulama uyumluluğu ya da bilinen bir gerileme yüzünden.
Her iki ailede de bunun bir yolu vardır: paketi tutmak, yükseltme dışında bırakmak ya da sürüm önceliği tanımlamak.
Ama sabitleme bir borçtur. Sabitlenen paket güvenlik yamalarını da almaz ve zamanla sistemin geri kalanıyla uyumsuzlaşır. Her sabitlemenin bir gerekçesi ve bir bitiş tarihi olmalıdır; aksi hâlde kimsenin nedenini hatırlamadığı kalıcı bir istisnaya dönüşür.
Depo dışından kurulan yazılım
Bir yazılımı doğrudan kaynaktan derleyip kurmak ya da elle bir arşivden açmak çalışır — ama paket yöneticisinin haberi olmaz.
Sonuçları vardır: güncellenmez, kaldırılırken izleri kalır, ve daha sonra aynı yazılımın paket sürümü kurulduğunda çakışır. “Neden iki sürüm var” sorusunun kaynağı genelde budur.
Zorunluysa iki disiplinden biri uygulanmalıdır: ya /usr/local altında kalıp sistem dizinlerine karışmamak, ya da kendi paketinizi üretip depodan kurmak.
Bir makinede neyin kurulu olduğunu envanterlemek denetim öncesi ayrı bir iştir; yaklaşımı yazılım envanteri ve lisans rehberinde Windows tarafı için ele alınıyor.
Dağıtımdan bağımsız paketler
Snap, Flatpak ve AppImage gibi biçimler, bağımlılıkları paketin içine koyarak dağıtım farklarını ortadan kaldırır.
Kazanç taşınabilirliktir: aynı paket her dağıtımda çalışır. Bedeli boyut ve tekrardır — aynı kütüphane onlarca pakette ayrı ayrı bulunur.
Sunucu tarafında bu biçimler yaygın değildir; asıl kullanım alanları masaüstüdür. Sunucuda benzer sorunu çözen şey konteynerlerdir; ayrım sanal makine mi konteyner mi yazısında.
Otomatik güncelleme
Güvenlik yamalarının otomatik uygulanması çoğu sunucuda doğru tercihtir — ama sınırlarıyla.
Makul bir kurulum yalnızca güvenlik güncellemelerini uygular, yeniden başlatma gerektiren durumları raporlar ve bakım penceresi dışına taşmaz.
Her şeyi otomatik yükseltmek ise sürprizlere açıktır: bir bağımlılık değişikliği uygulamayı durdurabilir. Kritik sistemlerde önce test ortamına, sonra kademeli olarak üretime uygulamak standarttır.
Aynı kademeli yaklaşımın Windows tarafındaki karşılığı güncelleme halkaları rehberinde.
Kısaca
Paket yöneticisi bir indirme aracı değil, sistemdeki yazılımın kaydını tutan bir defterdir. Depolar, imzalar ve bağımlılık çözümü bu defterin güvenilirliğini sağlar.
Onu atlayarak kurulan her şey defterin dışında kalır — ve bir gün mutlaka sorun çıkarır.