---
title: 'Paket Yöneticisi Kavramı'
source: 'https://academia.sh/tr/kurslar/linuxa-giris/paket-yoneticisi-kavrami'
course: "Linux'a Giriş"
language: tr
updated: '2026-08-17T18:09:56+00:00'
license: 'CC BY-SA 4.0'
---

# Paket Yöneticisi Kavramı

Paketin dosya kümesi ve üstveriden oluşması, kurulu paket veritabanının işlevi, bağımlılık çözümlemesinin kısıt problemi olarak yapısı ve sürüm karşılaştırma kuralları.

Kurs boyunca kullanılan araçların hepsi sistemde hazır bulundu. Bunların oraya nasıl geldiği,
nasıl güncellendiği ve nasıl kaldırıldığı sorulmadı.

Soru göründüğünden zordur. Bir programı kurmak, dosyalarını kopyalamaktan ibaret değildir:
çalıştırılabilir dosya bir dizine, kütüphaneleri başka bir dizine, yapılandırması `/etc`
altına, belgeleri kılavuz dizinine gider. Dizin hiyerarşisi dersindeki yerleşim standardı
tam olarak bu dağılımı tanımlıyordu. Elle yapıldığında hangi dosyanın hangi programa ait
olduğu kaydedilmez ve kaldırma işlemi olanaksızlaşır.

## Paket Nedir

**Paket**, kurulacak dosyaları ve bu dosyalar hakkındaki üstveriyi bir arada taşıyan
arşivdir. Yapısı, arşivleme dersindeki biçime benzer: dosya ağacı artı başlık bilgisi. Fark,
başlığın kurulum kararları için okunmasıdır.

Üstverinin taşıdığı bilgiler paket yöneticisi ailesine göre adlandırma farkları gösterse de
alanlar ortaktır:

| Alan | İşlevi |
|---|---|
| Ad | Paketin kimliği |
| Sürüm | Hangi yayın olduğu |
| Mimari | Hangi işlemci ailesi için derlendiği |
| Bağımlılıklar | Çalışması için gereken diğer paketler |
| Çakışmalar | Aynı anda kurulu olamayacağı paketler |
| Sağladıkları | Karşıladığı soyut yetenek adları |
| Özetler | Her dosyanın içerik özeti |
| Kurulum betikleri | Kurulum öncesi ve sonrası çalışacak adımlar |

Son iki alan sık atlanır ama belirleyicidir. Özetler, kurulu dosyaların sonradan
değiştirilip değiştirilmediğinin sınanmasını sağlar — dosya aktarımı dersindeki doğrulama
yönteminin sistem ölçeğine taşınmış hâlidir. Kurulum betikleri ise dosya kopyalamanın
yetmediği durumları — kullanıcı hesabı açma, servis kaydı, veritabanı düzenleme — kapsar ve
kök yetkisiyle çalıştıkları için paket güveninin merkezinde dururlar.

## Kurulu Paket Veritabanı

Paket yöneticisinin ikinci bileşeni, sistemde kurulu her paketin kaydını tutan yerel bir
veritabanıdır. Kayıt, paketin üstverisini ve kurduğu dosyaların tam listesini içerir.

Bu liste olmadan üç işlem yapılamaz:

**Kaldırma.** Hangi dosyaların silineceği bilinemez; elle kurulan yazılım, kaldırıldığında
sistemde artık bırakır.

**Yükseltme.** Eski sürümün hangi dosyalarının yenisinde bulunmadığı bilinemez; artık
dosyalar birikir.

**Sahiplik sorgusu.** Sistemdeki bir dosyanın hangi pakete ait olduğu sorulamaz; bu sorgu,
bir arızayı hangi paketin sorumluluğuna yazacağını belirlemekte kullanılır.

Veritabanının bir başka sonucu, **elle değiştirilmiş dosyaların** ayırt edilebilmesidir.
Yapılandırma dosyaları paketle gelir ama yönetici tarafından değiştirilir; yükseltmede bu
değişikliklerin korunması gerekir. Paket yöneticileri, dosyanın özetini kayıttakiyle
karşılaştırarak değişip değişmediğini anlar ve değişmişse yükseltmede üzerine yazmak yerine
kullanıcıya sorar.

## Bağımlılıklar Neden Vardır

Bağımlılık soyut bir kavram değildir; çalıştırılabilir dosyaların kendisinde görülebilir:

```
$ ldd /usr/bin/ls
	linux-vdso.so.1 (0x0000ffff88cce000)
	libselinux.so.1 => /lib/aarch64-linux-gnu/libselinux.so.1 (0x0000ffff88be0000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff88a20000)
	/lib/ld-linux-aarch64.so.1 (0x0000ffff88c80000)
	libpcre2-8.so.0 => /lib/aarch64-linux-gnu/libpcre2-8.so.0 (0x0000ffff88970000)
```

Listeleme komutu tek başına çalışmaz: standart C kütüphanesine, güvenlik etiketleri
kütüphanesine ve düzenli ifade kütüphanesine bağlıdır. Parantez içindeki sayılar
kütüphanelerin o çalıştırmadaki yükleme adresleridir ve her çağrıda değişir; kütüphane
adları değişmez. Bu kütüphaneler ayrı paketlerde
gelir. Bilgisayarlar Nasıl Çalışır kursundaki bağlama ve yükleme dersi bu ilişkiyi
tanımlamıştı; paket bağımlılıkları o ilişkinin dağıtım düzeyindeki karşılığıdır.

Paylaşılan kütüphane kullanmanın gerekçesi tekrarı önlemektir: yüzlerce program aynı
kütüphanenin ayrı kopyasını taşımaz. Bedeli, kurulumun bir bağımlılık çizgesine
dönüşmesidir.

**Sağlanan yetenek** kavramı bu çizgeyi esnetir. Bir paket, somut adının yanında soyut bir
yetenek adı da sağlayabilir; başka paketler somut ada değil bu yeteneğe bağlanır. Böylece
aynı işi yapan farklı gerçekleştirimler birbirinin yerine geçebilir. Kabuk dersindeki
`/bin/sh` örneğinin paketleme düzeyindeki karşılığıdır: bağımlılık bir role kurulur, role
hangi programın atandığı sistemin kararıdır.

## Çözümleme Bir Kısıt Problemidir

Bir paketin kurulması istendiğinde çözülmesi gereken soru şudur: kurulu paket kümesine
hangi paketler eklenirse tüm bağımlılıklar sağlanır ve hiçbir çakışma oluşmaz?

Bu bir arama problemidir. Küçük bir örnek yapısını gösterir:

| Paket | Bağımlılık | Çakışma |
|---|---|---|
| `cizim` 2.0 | `grafik` ≥ 3 | — |
| `rapor` 1.4 | `grafik` ≤ 2 | — |
| `grafik` 2.9 | — | — |
| `grafik` 3.1 | — | — |

`cizim` ile `rapor` aynı sistemde kurulamaz: biri `grafik` kütüphanesinin üçüncü sürümünü,
diğeri en çok ikinci sürümünü ister. Çözümleyici bunu bildirir ve kullanıcıdan seçim
yapmasını bekler. Gerçek sistemlerde bu çizge on binlerce düğüm taşır ve kısıtlar
kesişimler, alternatifler ve sürüm aralıklarıyla karmaşıklaşır.

Çözümlemenin sonucu üç durumdan biridir: bir çözüm bulunur ve işlem listesi sunulur; çözüm
yoktur ve çakışma bildirilir; ya da birden çok çözüm vardır ve yöneticinin tercih kuralları
— hangi depo öncelikli, hangi sürüm yeğlenir — devreye girer.

Bu nedenle kurulum komutları, işlemi yapmadan önce **ne yapacaklarını listeler ve onay
ister**. Liste yalnızca istenen paketi değil, sürüklediği tüm bağımlılıkları ve kaldırılması
gerekenleri içerir; okunmadan onaylanmamalıdır.

## Sürüm Karşılaştırma

Bağımlılıklar "en az şu sürüm" biçiminde kısıt koyduğuna göre, sürümlerin karşılaştırılabilir
olması gerekir. Karşılaştırma sözlük sırasıyla yapılamaz:

- `1.10` sürümü `1.9`'dan **büyüktür**, ama metin olarak karşılaştırılırsa küçük görünür.
- `2.0` ile `2.0.0` çoğu kuralda eşit sayılır.
- `1.0-beta` sürümü `1.0`'dan **küçüktür**; harf içeren ekler yayın öncesi anlamına gelir.

Bu yüzden her paket yöneticisi ailesinin tanımlı bir karşılaştırma algoritması vardır: sürüm
dizesi sayısal ve harfli parçalara bölünür, sayısal parçalar sayı olarak, harfli parçalar
sıralı olarak karşılaştırılır.

Bir de sıralamayı elle bozma gereği doğar. Bir yazılımın sürüm numaralandırma düzeni
değiştiğinde, yeni sürüm eskisinden küçük görünebilir. Bunun için sürüm dizesinin önüne,
karşılaştırmada her şeyden önce bakılan bir sayı eklenir; bu sayı arttığında sonraki tüm
karşılaştırmalar yeni düzeni kazanır.

## Paket Yöneticisi Sınıfları

Araçlar iki düzeyde çalışır ve ayrım her ailede vardır.

**Alt düzey araç** tek bir paket dosyasıyla ilgilenir: açar, dosyaları yerleştirir,
veritabanına kaydeder. Bağımlılık **çözmez**; eksik bağımlılık varsa hata verir. Kurulu
paketleri sorgulama işlemleri de bu düzeydedir.

**Üst düzey araç** depoları bilir, bağımlılıkları çözer, indirir ve alt düzey aracı çağırır.
Kullanıcının gündelik olarak kullandığı araç budur.

Ayrım pratik bir sonuç doğurur: elde bir paket dosyası varsa ve alt düzey araçla kurulursa,
bağımlılıklar eksik kalabilir. Doğru yaklaşım, dosyayı üst düzey araca vermektir; böylece
eksik bağımlılıklar depodan tamamlanır.

Bir de sistem paket yöneticisinin dışında kalan bir alan vardır: programlama dillerinin
kendi paket yöneticileri. İkisi ayrı veritabanı tutar ve birbirinden habersizdir. Aynı
kütüphane her ikisiyle de kurulursa hangi kopyanın kullanıldığı belirsizleşir. Yaygın
uygulama, dil düzeyindeki paketleri sistem dizinlerine değil projeye veya kullanıcıya özgü
bir alana kurmaktır.

## Özet

- Paket, kurulacak dosyaları ve üstveriyi taşıyan arşivdir; üstveri bağımlılık, çakışma,
  özet ve kurulum betiği bilgilerini içerir.
- Kurulu paket veritabanı, kaldırma, yükseltme ve dosya sahipliği sorgusunu mümkün kılan
  kayıttır.
- Bağımlılıklar paylaşılan kütüphanelerin somut sonucudur; soyut yetenek adları farklı
  gerçekleştirimlerin birbirinin yerine geçmesini sağlar.
- Kurulum bir kısıt problemidir; çözüm olmayabilir veya birden çok olabilir, bu yüzden
  araçlar işlem listesini onaya sunar.
- Sürüm karşılaştırması sözlük sırasıyla yapılamaz; sürüm dizesi sayısal ve harfli parçalara
  bölünerek karşılaştırılır.
- Alt düzey araç tek paketle ilgilenir ve bağımlılık çözmez; üst düzey araç depoları bilir
  ve çözümlemeyi yapar.

## Sonraki Adım

Kavramlar kurulduğuna göre işlemlere geçilebilir. Sonraki ders, ailesi ne olursa olsun her
paket yöneticisinde karşılığı bulunan işlem kümesini tanıtır: dizin güncelleme, kurma,
kaldırma, yapılandırmayla birlikte kaldırma, sorgulama ve doğrulama — ve bu işlemlerin
hangilerinin geri alınabilir olduğunu.
