# Paket Yöneticisi

Adres: https://softwaredictionary.org/tr/terimler/package-manager
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-03
İngilizcesi: Package Manager
Okunuşu: pekıc menıcır

Kısaca: Paket yöneticisi, yazılım paketlerini ve onların bağımlılıklarını kuran, güncelleyen ve kaldıran, sürümleri otomatik olarak çözen bir araçtır.

## Paket yöneticisi (package manager) nedir?

Günümüz yazılımları çok sayıda paketten kurulur ve bunların her biri başkalarına bağımlı olabilir. Paket yöneticisi, npm için `package.json` ya da Python için `pyproject.toml` gibi, projenin neye ihtiyaç duyduğunu anlatan listeyi okur; doğru sürümleri npmjs.com ya da PyPI gibi bir registry'den indirir ve herkesin gereksinimlerini karşılayan bir sürüm kümesi bulur.

İki geniş türü vardır. Dil paket yöneticileri bir projeye kütüphane kurar: JavaScript için npm, pnpm ve Yarn; Python için pip ve uv; Rust için Cargo; Java için Maven ve Gradle; .NET için NuGet ve PHP için Composer. Sistem paket yöneticileri ise bir makineye program kurar: Linux'ta apt ve dnf, macOS'ta Homebrew, Windows'ta winget.

`package-lock.json` ya da `Cargo.lock` gibi bir lockfile (kilit dosyası), dolaylı olanlar dahil kurulan her paketin tam sürümünü kaydeder; böylece her geliştirici ve her derleme aynı sonucu alır. Manifest'teki sürüm aralıkları genellikle anlamsal sürümlemeyi (semantic versioning) izler; bu da uyumlu hata düzeltmelerini içeri alırken kırıcı değişiklikleri dışarıda tutar.

Sık yapılan bir yanlış, popüler bir paketi kurmanın her zaman güvenli olduğunu düşünmektir. Paketler makinenizde kod çalıştırır; saldırganlar da tedarik zinciri saldırılarında birbirine benzeyen adlarla paket yayımlar ya da terk edilmiş paketleri ele geçirir. Yeni bağımlılıkları incelemek, lockfile'ı commit'lemek ve `npm audit` gibi denetim araçları çalıştırmak riski azaltır.

## Önemli noktalar

- Paket yöneticisi paketleri kurar ve bağımlılıklarını çözer.
- Bir manifest okur ve npm ya da PyPI gibi bir registry'den indirir.
- Dil yöneticileri kütüphaneleri, sistem yöneticileri programları kurar.
- Lockfile'lar tam sürümleri sabitler; böylece her kurulum tekrarlanabilir olur.
- Paketler saldırı aracı olabilir; bu yüzden bağımlılıkları inceleyin ve denetleyin.

## Örnek: Günlük paket yöneticisi komutları

```bash
# JavaScript (npm)
npm install express          # add a dependency and update package.json and the lockfile
npm ci                       # install exactly what the lockfile says (CI)
npm outdated                 # see newer versions

# Python (pip in a virtual environment)
python -m venv .venv && source .venv/bin/activate
pip install requests

# Rust (Cargo)
cargo add serde

# System packages
sudo apt install git         # Debian / Ubuntu
brew install node            # macOS
```

## Sık sorulan sorular

**Lockfile nedir?**

Bağımlılıkların bağımlılıkları dahil kurulan bütün paketlerin tam sürümlerini kaydeden bir dosyadır. Onu commit'lemek, herkesin o günün en yeni sürümleri yerine birebir aynı kurulumu almasını sağlar.

**npm, pnpm ve Yarn arasındaki fark nedir?**

Üçü de paketleri package.json kullanarak npm registry'sinden kurar. pnpm her paketin tek bir kopyasını projeler arasında paylaşarak disk alanı kazandırır; Yarn ve pnpm de hız, workspace desteği ve node_modules klasörünü ne kadar katı düzenledikleri açısından npm'den ayrılır.

**Paket registry'si nedir?**

Paketlerin yayımlandığı ve indirildiği sunucudur: JavaScript için npmjs.com, Python için PyPI, Rust için crates.io gibi. Şirketler iç paketleri için çoğu zaman özel registry'ler çalıştırır.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
