Takip et

Ubuntu ve Debian’da Apt-Get ve Apt-Cache ile Paket Yönetimi: Kapsamlı Bir Rehber

Ubuntu ve Debian’da Apt-Get ve Apt-Cache ile Paket Yönetimi: Kapsamlı Bir Rehber Linux tabanlı işletim sistemleri, yazılım kurulumu ve yönetim

Ubuntu ve Debian’da Apt-Get ve Apt-Cache ile Paket Yönetimi: Kapsamlı Bir Rehber

Linux tabanlı işletim sistemleri, yazılım kurulumu ve yönetimi konusunda benzersiz bir esneklik ve kontrol sunar. Bu esnekliğin temelinde paket yöneticileri yatar. Özellikle Debian ve Ubuntu gibi popüler dağıtımlarda kullanılan Gelişmiş Paket Aracı (Advanced Package Tool – APT), sistem yöneticileri ve son kullanıcılar için yazılım dünyasını basitleştiren güçlü bir mekanizmadır. Bu makale, APT’nin temel bileşenleri olan apt-get ve apt-cache komutlarını derinlemesine inceleyerek, Ubuntu ve Debian sistemlerinde paket yönetiminin inceliklerini kapsamlı bir şekilde açıklamayı amaçlamaktadır.

Giriş: Paket Yönetimi Neden Önemlidir?

Bir işletim sisteminde yazılım kurmak, güncellemek veya kaldırmak, basit bir işlem gibi görünse de, arka planda birçok karmaşık süreci barındırır. Her yazılımın kendi bağımlılıkları (çalışması için ihtiyaç duyduğu diğer yazılımlar veya kütüphaneler) vardır ve bu bağımlılıkların doğru versiyonlarda ve doğru yerlerde bulunması gerekir. Manuel olarak bu bağımlılıkları takip etmek ve yönetmek neredeyse imkansızdır. İşte tam bu noktada paket yöneticileri devreye girer.

Paket yöneticisi, yazılımları “paket” adı verilen organize edilmiş formatlarda tutar. Bu paketler, yazılımın kendisi, yapılandırma dosyaları, belgeler ve bağımlılık bilgileri gibi tüm gerekli bileşenleri içerir. Paket yöneticisi, bu paketleri merkezi depolardan (repository) indirir, bağımlılıkları otomatik olarak çözer, kurulumu gerçekleştirir, güncellemeleri yönetir ve gerektiğinde yazılımları güvenli bir şekilde kaldırır. Bu sayede, kullanıcılar yazılım yönetimi konusunda büyük bir yükten kurtulur ve sistem kararlılığı sağlanır.

Debian ve Ubuntu ekosisteminde APT, bu görevi üstlenen ana sistemdir. apt-get ve apt-cache ise APT’nin komut satırı arayüzünde kullanılan en temel ve güçlü araçlarıdır. Bu iki komut, sisteminizdeki yazılımlar üzerinde tam kontrol sağlamanıza olanak tanır.

APT’yi Anlamak: Depolar ve Paket Bağımlılıkları

APT’nin çalışma prensibini anlamak için iki ana kavramı kavramak önemlidir: depolar (repositories) ve paket bağımlılıkları.

Depolar (Repositories)

Depolar, yazılım paketlerinin depolandığı merkezi sunuculardır. Debian ve Ubuntu, resmi depolarının yanı sıra, topluluk tarafından desteklenen veya üçüncü taraf geliştiriciler tarafından sağlanan ek depoları da kullanır. Sisteminiz, hangi depolardan paket indireceğini /etc/apt/sources.list dosyasından ve /etc/apt/sources.list.d/ dizini altındaki dosyalardan öğrenir. Bu dosyalar, her bir depo için bir URL, dağıtım adı (örneğin, focal veya bullseye) ve bileşenler (örneğin, main, universe, restricted, multiverse) listeler.

Bir depo eklediğinizde veya kaldırdığınızda, sisteminizin paket listelerini güncellemesi gerekir. Bu, apt-get update komutuyla yapılır ve sisteminize hangi paketlerin hangi versiyonlarının mevcut olduğu bilgisini getirir. Bu bilgiler, yerel bir önbellekte saklanır ve apt-cache komutlarının sorguladığı veritabanını oluşturur.

Paket Bağımlılıkları

Çoğu yazılım, çalışmak için başka yazılımlara veya kütüphanelere ihtiyaç duyar. Örneğin, bir medya oynatıcının ses kodeklerine veya grafik kütüphanelerine ihtiyacı olabilir. Bu ilişkiler “bağımlılıklar” olarak adlandırılır. Bir paketi kurmaya çalıştığınızda, APT otomatik olarak bu paketin tüm bağımlılıklarını kontrol eder ve eğer sistemde mevcut değillerse, onları da kurar. Bu, “bağımlılık çözme” olarak bilinir ve paket yöneticilerinin en kritik işlevlerinden biridir. Bağımlılıklar doğru bir şekilde yönetilmediğinde, yazılımlar çalışmaz veya sistem kararsız hale gelir. APT, bu karmaşık süreci kullanıcı için şeffaf hale getirir.

Temel Apt-Get Komutları: Güncelleme, Kurulum ve Kaldırma

apt-get, sisteminizdeki paketleri yönetmek için kullanılan ana komut satırı aracıdır. İşte en sık kullanılan apt-get komutları:

sudo apt-get update

Bu komut, sisteminizin depolarından yeni paket listelerini indirir. Paketleri güncellemez, yalnızca hangi paketlerin hangi versiyonlarının mevcut olduğu bilgisini yerel önbelleğe çeker. Herhangi bir paket kurmadan veya yükseltmeden önce bu komutu çalıştırmak hayati önem taşır, çünkü aksi takdirde sisteminiz eski paket listeleriyle çalışır ve en yeni yazılımları veya güncellemeleri göremeyebilir.

sudo apt-get update

sudo apt-get upgrade

update komutundan sonra, upgrade komutu sisteminizdeki kurulu paketleri yeni versiyonlarına yükseltir. Bu komut, mevcut paketleri yalnızca yeni versiyonları mevcutsa yükseltir ve yeni paketler kurmaz veya mevcut paketleri kaldırmaz. Bağımlılık değişiklikleri nedeniyle yükseltilemeyen paketleri atlar. Bu, genellikle güvenli bir yükseltme yöntemidir.

sudo apt-get upgrade

sudo apt-get dist-upgrade

dist-upgrade (distribution upgrade) komutu, upgrade‘den daha kapsamlıdır. Bu komut, bağımlılık değişikliklerini akıllıca ele alarak, gerekli durumlarda yeni paketler kurabilir veya mevcut paketleri kaldırabilir. Bu, özellikle bir Ubuntu sürümünden diğerine (örneğin, 20.04’ten 22.04’e) yükseltme yaparken kullanılır. Ancak, dikkatli kullanılmalıdır, çünkü sisteminizde önemli değişikliklere yol açabilir.

sudo apt-get dist-upgrade

sudo apt-get install

Bu komut, belirtilen paketi ve onun tüm bağımlılıklarını sisteminize kurar. Birden fazla paketi aynı anda kurmak için paket adlarını boşlukla ayırarak listeleyebilirsiniz.

sudo apt-get install firefox
sudo apt-get install apache2 mysql-server php libapache2-mod-php

Belirli bir paketin belirli bir sürümünü kurmak isterseniz, paket adından sonra = işaretini ve sürüm numarasını ekleyebilirsiniz:

sudo apt-get install firefox=102.0.1+build1-0ubuntu0.20.04.1

Kurulum sırasında önerilen veya tavsiye edilen paketleri dahil etmek istemiyorsanız, --no-install-recommends veya --no-install-suggests seçeneklerini kullanabilirsiniz:

sudo apt-get install --no-install-recommends 

sudo apt-get remove

Bu komut, belirtilen paketi sistemden kaldırır, ancak paketin yapılandırma dosyalarını genellikle saklar. Bu, paketi daha sonra tekrar kurarsanız, eski ayarlarınızın geri yüklenmesini sağlar.

sudo apt-get remove firefox

sudo apt-get purge

remove komutunun aksine, purge komutu paketi ve onunla ilişkili tüm yapılandırma dosyalarını sistemden tamamen kaldırır. Bu, paketin izlerini tamamen silmek istediğinizde kullanışlıdır.

sudo apt-get purge firefox

sudo apt-get autoremove

Bir paketi kaldırdığınızda, onunla birlikte kurulan ancak artık başka hiçbir paket tarafından kullanılmayan bağımlılıklar sistemde kalabilir. autoremove komutu, bu “artık” bağımlılıkları otomatik olarak tespit eder ve kaldırır. Bu, disk alanından tasarruf etmenizi ve sisteminizi temiz tutmanızı sağlar.

sudo apt-get autoremove

sudo apt-get clean

apt-get clean komutu, apt‘nin yerel deposundan indirilen tüm paket dosyalarını (.deb uzantılı dosyalar) temizler. Bu dosyalar /var/cache/apt/archives/ dizininde saklanır ve daha sonraki kurulumlar veya yükseltmeler için kullanılabilir. Ancak, zamanla bu dizin oldukça büyüyebilir. Bu komut, bu önbelleği tamamen boşaltır.

sudo apt-get clean

sudo apt-get autoclean

autoclean komutu, clean‘e benzer, ancak yalnızca artık indirilemeyen veya kullanılamayan eski paket dosyalarını temizler. Örneğin, bir paketin yeni bir sürümü yayınlandığında, eski sürümün .deb dosyası autoclean tarafından kaldırılabilir. Bu, clean kadar agresif değildir ve genellikle daha güvenli bir temizleme yöntemidir.

sudo apt-get autoclean

Gelişmiş Apt-Get Kullanımı

apt-get sadece temel kurulum ve kaldırma işlemlerinden ibaret değildir. Daha spesifik senaryolar için çeşitli gelişmiş seçenekler sunar:

sudo apt-get build-dep

Bir yazılımın kaynak kodundan derlenmesi gerektiğinde, o yazılımın derlenmesi için gerekli olan tüm bağımlılık paketlerini (build dependencies) kurmanız gerekir. build-dep komutu, bunu otomatik olarak yapar.

sudo apt-get build-dep vlc

sudo apt-get download

Bu komut, bir paketi kurmadan yalnızca .deb dosyasını indirir. Bu, paketi çevrimdışı bir makineye aktarmak veya manuel olarak kurmak istediğinizde faydalıdır.

sudo apt-get download firefox

sudo apt-get check

check komutu, sisteminizdeki bozuk bağımlılıkları kontrol eder. Herhangi bir tutarsızlık tespit ederse, bunları size bildirir.

sudo apt-get check

sudo apt-get source

Bu komut, belirtilen paketin kaynak kodunu indirir. Geliştiriciler veya meraklı kullanıcılar için faydalıdır.

sudo apt-get source firefox

sudo apt-get --fix-broken install

Bazen paket bağımlılıkları bozulabilir ve sisteminiz yeni paketleri kurmayı veya mevcutları yükseltmeyi reddedebilir. Bu komut, bozuk bağımlılıkları onarmaya çalışır ve genellikle bu tür sorunları çözer.

sudo apt-get --fix-broken install

Apt-Cache ile Keşif: Paket Bilgilerini Sorgulama

apt-cache, APT’nin yerel paket önbelleğini sorgulamak ve paketler hakkında bilgi edinmek için kullanılan bir araçtır. Kurulum veya kaldırma işlemi yapmaz, sadece bilgi sağlar.

apt-cache search

Bu komut, yerel paket önbelleğinde belirtilen anahtar kelimeyi içeren paketleri arar. Hem paket adlarında hem de paket açıklamalarında arama yapar. Bu, belirli bir işlevi yerine getiren yazılımları bulmak için çok kullanışlıdır.

apt-cache search firewall

apt-cache show

Bir paket hakkında ayrıntılı bilgi almak için show komutunu kullanın. Bu, paketin açıklaması, versiyonu, boyutu, bağımlılıkları, geliştiricisi ve diğer meta verileri gibi bilgileri gösterir.

apt-cache show firefox

apt-cache policy

policy komutu, bir paketin hangi versiyonlarının hangi depolardan mevcut olduğunu ve sisteminizin o anda hangi versiyonu kuracağını gösterir. Bu, özellikle aynı paketin farklı versiyonları farklı depolarda mevcut olduğunda veya bir paketin neden belirli bir versiyonunun kurulduğunu anlamak istediğinizde faydalıdır.

apt-cache policy firefox

Çıktıda, kurulu versiyon, aday versiyon (kurulabilecek en yüksek öncelikli versiyon) ve diğer mevcut versiyonlar listelenir.

apt-cache depends

Bu komut, belirtilen paketin doğrudan ve dolaylı tüm bağımlılıklarını listeler. Bu, bir paketin neden bu kadar çok başka paketi de beraberinde getirdiğini anlamanıza yardımcı olur.

apt-cache depends vlc

apt-cache rdepends

rdepends (reverse depends) komutu, depends‘in tersidir. Belirtilen pakete bağımlı olan diğer paketleri listeler. Yani, bu paketi kaldırırsanız hangi diğer paketlerin etkileneceğini gösterir.

apt-cache rdepends libssl-dev

apt-cache stats

Bu komut, APT’nin yerel önbelleği hakkında istatistiksel bilgiler sağlar. Örneğin, kaç paket olduğu, kaç bağımlılık ilişkisi olduğu gibi verileri gösterir.

apt-cache stats

apt-cache pkgnames

Sisteminizdeki tüm mevcut paketlerin adlarını listeler. Genellikle grep ile birlikte belirli bir deseni aramak için kullanılır.

apt-cache pkgnames | grep ^lib

Depo Yönetimi

Depolar, APT’nin kalbidir. Onları doğru yönetmek, sisteminizin güvenliğini ve yazılım erişilebilirliğini sağlar.

sources.list Dosyası

Ana depo yapılandırma dosyası /etc/apt/sources.list‘tir. Genellikle, her satır bir depo girişini temsil eder ve şu formatta olur:
deb [options] uri distribution components
veya
deb-src [options] uri distribution components

* deb: İkili (binary) paketler için.
* deb-src: Kaynak kod paketleri için.
* uri: Deponun URL’si.
* distribution: Dağıtımın kod adı (örneğin, focal, jammy, bullseye).
* components: Deponun bölümleri (main, restricted, universe, multiverse).

Örnek bir giriş:
deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse

Ek depolar genellikle /etc/apt/sources.list.d/ dizini altındaki ayrı .list dosyalarında bulunur. Bu, yapılandırmayı daha modüler hale getirir.

Yeni Depo Ekleme (PPA’lar ve Diğerleri)

Ubuntu’da, genellikle “Kişisel Paket Arşivleri” (Personal Package Archives – PPA) adı verilen üçüncü taraf depoları eklemek için add-apt-repository komutu kullanılır. Bu komut software-properties-common paketinin bir parçasıdır ve genellikle varsayılan olarak yüklüdür.

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

Bu komut, hem depo girişini /etc/apt/sources.list.d/ altına ekler hem de deponun GPG anahtarını sisteme dahil eder. Diğer depolarda ise GPG anahtarını manuel olarak eklemeniz gerekebilir:

wget -qO - https://apt.example.com/KEY.gpg | sudo apt-key add -
echo "deb https://apt.example.com/repo stable main" | sudo tee /etc/apt/sources.list.d/example.list
sudo apt-get update

Not: apt-key komutu eski kabul edilmektedir. Yeni yöntemler GPG anahtarlarını /etc/apt/trusted.gpg.d/ dizinine yerleştirmeyi önerir.

Depo Kaldırma

Bir depoyu kaldırmak için, ilgili .list dosyasını /etc/apt/sources.list.d/ dizininden silmeniz veya /etc/apt/sources.list dosyasındaki ilgili satırı yorum satırı haline getirmeniz (başına # ekleyerek) gerekir. PPA’lar için add-apt-repository komutunu --remove seçeneğiyle kullanabilirsiniz:

sudo add-apt-repository --remove ppa:ondrej/php
sudo apt-get update

Depoyu kaldırdıktan sonra, sudo apt-get update komutunu çalıştırmayı unutmayın.

Sık Karşılaşılan Sorunlar ve Giderilmesi

APT ile çalışırken bazı yaygın sorunlarla karşılaşabilirsiniz. İşte bunlardan bazıları ve çözümleri:

“E: Unable to locate package “

Bu hata, APT’nin istediğiniz paketi yerel önbelleğinde bulamadığı anlamına gelir. Nedenleri şunlar olabilir:
* Paket adı yanlış yazılmış: Paketin doğru adını kontrol edin (apt-cache search kullanın).
* apt-get update çalıştırılmamış: Yeni paket listelerini indirmek için sudo apt-get update komutunu çalıştırın.
* Paket mevcut değil: İlgili depo sisteminize eklenmemiş olabilir veya paket artık mevcut olmayabilir. Gerekirse depoyu ekleyin.
* İnternet bağlantısı yok: Depolara erişim için internet bağlantınızın olduğundan emin olun.

“E: Broken packages” veya “E: Unmet dependencies”

Bu hata, sisteminizdeki paketler arasında bağımlılık sorunları olduğu anlamına gelir.
* Çözüm: sudo apt-get --fix-broken install komutunu deneyin. Bu, bozuk bağımlılıkları düzeltmeye çalışır.
* Çözüm: sudo dpkg --configure -a komutunu çalıştırın. Bu, yarım kalmış kurulumları tamamlamaya çalışır.
* Çözüm: Belirli bir paketi kaldırmanız gerekiyorsa, sudo apt-get remove veya sudo apt-get purge komutlarını kullanın.

“E: Hash Sum mismatch”

Bu hata, indirilen paket dosyalarının beklenen sağlama toplamıyla (hash sum) eşleşmediği anlamına gelir. Genellikle ağ sorunları, bozuk önbellek veya nadiren depo sorunlarından kaynaklanır.
Çözüm: sudo rm -rf /var/lib/apt/lists/ komutuyla APT’nin önbellek listelerini temizleyin ve ardından sudo apt-get update komutunu çalıştırın.
* Çözüm: Farklı bir ayna (mirror) sunucusu kullanmayı deneyin.

Disk Alanı Sorunları

/boot veya / bölümünüzde yeterli alan kalmadığında paket işlemleri başarısız olabilir.
* Çözüm: sudo apt-get autoremove komutuyla artık kullanılmayan bağımlılıkları kaldırın.
* Çözüm: sudo apt-get clean veya sudo apt-get autoclean komutlarıyla indirilen paket dosyalarını temizleyin.
* Çözüm: Eski çekirdekleri (kernel) kaldırın. dpkg -l | grep linux-image komutuyla kurulu çekirdekleri listeleyip, sudo apt-get purge linux-image-x.y.z-generic ile eski olanları kaldırabilirsiniz (ancak çalışan çekirdeği silmediğinizden emin olun!).

GPG Anahtar Hataları

Bir depo eklediğinizde veya apt-get update çalıştırdığınızda “NO_PUBKEY” veya “GPG error” gibi hatalar alabilirsiniz. Bu, depoyu doğrulayan GPG anahtarının sisteminizde eksik olduğu veya bozuk olduğu anlamına gelir.
* Çözüm: Eksik anahtarı manuel olarak eklemeniz gerekir. Hata mesajında belirtilen anahtar kimliğini (örneğin, 1234ABCD) kullanarak:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1234ABCD
veya daha modern yöntemle:
wget -qO - https://example.com/repo.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/example-archive-keyring.gpg
Ardından sudo apt-get update komutunu tekrar çalıştırın.

Modern apt Komutu: Apt-Get ve Apt-Cache’in Birleşimi

Son yıllarda, Debian ve Ubuntu sistemlerinde apt-get ve apt-cache komutlarının birçok işlevini birleştiren ve kullanıcı deneyimini iyileştiren yeni bir komut olan apt tanıtıldı. apt komutu, daha kullanıcı dostu çıktılar sunar ve en sık kullanılan apt-get ve apt-cache işlevlerini tek bir arayüzde toplar.

apt Komutunun Avantajları:

* Birleşik Arayüz: apt-get ve apt-cache‘in en yaygın kullanılan özelliklerini tek bir komut altında toplar.
* Kullanıcı Dostu Çıktı: Renkli ilerleme çubukları, özet bilgileri ve daha anlaşılır mesajlar sunar.
* Geliştirilmiş Arama: apt search daha kapsamlı ve daha iyi formatlanmış sonuçlar verir.

Yaygın apt Komutları ve Karşılıkları:

* apt update (karşılığı apt-get update)
* apt upgrade (karşılığı apt-get upgrade)
* apt install (karşılığı apt-get install )
* apt remove (karşılığı apt-get remove )
* apt purge (karşılığı apt-get purge )
* apt autoremove (karşılığı apt-get autoremove)
* apt clean (karşılığı apt-get clean)
* apt search (karşılığı apt-cache search )
* apt show (karşılığı apt-cache show )
* apt policy (karşılığı apt-cache policy )

apt komutu, günlük kullanım için genellikle tercih edilen araçtır. Ancak, apt-get ve apt-cache komutları hala tamamen işlevseldir ve özellikle betiklerde (script) veya bazı özel durumlarda kullanılmaya devam etmektedir. Örneğin, apt-get dist-upgrade, apt-get build-dep gibi komutların apt içinde doğrudan bir karşılığı yoktur ve bu senaryolarda apt-get hala birincil araçtır.

En İyi Uygulamalar

Paket yönetimini etkin ve güvenli bir şekilde sürdürmek için bazı en iyi uygulamaları takip etmek önemlidir:

1. Düzenli Güncelleme: Sisteminizin güvenliğini ve kararlılığını sağlamak için sudo apt update && sudo apt upgrade komutlarını düzenli olarak çalıştırın.
2. Sistemi Temiz Tutun: sudo apt autoremove ve sudo apt clean komutlarını periyodik olarak kullanarak disk alanından tasarruf edin ve gereksiz dosyaları temizleyin.
3. Depoları Dikkatli Yönetin: Yalnızca güvendiğiniz kaynaklardan depo ekleyin. Bilinmeyen veya şüpheli depolar, sisteminizin güvenliğini tehlikeye atabilir.
4. Kurulum Öncesi İnceleme: Bir paket kurmadan önce, apt-cache show komutuyla paketin ne yaptığını, hangi bağımlılıkları olduğunu ve sisteminize ne gibi değişiklikler getireceğini inceleyin.
5. Yedeklemeler: Özellikle büyük sistem yükseltmeleri (dist-upgrade) veya kritik yapılandırma değişiklikleri yapmadan önce önemli verilerinizi ve yapılandırma dosyalarınızı yedekleyin.
6. apt Komutunu Tercih Edin: Günlük paket yönetimi görevleri için genellikle apt komutunu kullanın, çünkü daha kullanıcı dostudur ve modernleşmiştir. Ancak apt-get ve apt-cache‘in derinlemesine yeteneklerini de öğrenmekten çekinmeyin.

Sonuç

Ubuntu ve Debian sistemlerinde apt-get ve apt-cache (ve modern apt komutu), yazılım yönetimi için vazgeçilmez araçlardır. Bu komutlar, paket kurulumundan kaldırmaya, güncellemeden bağımlılık çözümlemeye kadar geniş bir yelpazede işlevsellik sunar. Depoların doğru yönetilmesi, bağımlılıkların anlaşılması ve temel komutların etkin bir şekilde kullanılması, her Linux kullanıcısı için temel bir beceridir.

Bu kapsamlı rehber, APT’nin gücünü anlamanıza ve Ubuntu/Debian sistemlerinizde yazılım yönetimini ustalıkla gerçekleştirmenize yardımcı olmayı ummaktadır. Unutmayın, pratik yapmak ve karşılaştığınız sorunları çözmek, bu araçlara hakim olmanın en iyi yoludur. APT ekosistemi sürekli geliştiği için, yeni özellikler ve en iyi uygulamalar hakkında bilgi sahibi olmak için resmi belgeleri ve topluluk kaynaklarını takip etmek her zaman faydalıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version