Rehber APT Nedir?

1608797763727.png
Bu rehberimde APT yani Debian tabanlı dağıtımlarda kullandığınız veya kullanacağınız paket yöneticisini anlatacağım. Öncelikle Windows'dan geçenler için birkaç açıklama yapmak lazım. Windows kullanırken internete girip indirmek istediğiniz programın sitesine girerek .exe (executable) dosyasını indirerek kurulum sihirbazında "next" tuşuna basarak kuruyordunuz. Linux'ta işler böyle yürümüyor.

Linux'ta indirmek istediğiniz paket, bir paket yöneticisinin repository üzerinden size getirmesi ile oluyor. APT'ye neden ihtiyacımız olduğunu anlamışsınızdır herhalde, kendisi hem indiriyor hem de kuruyor. Şimdi asıl boyutunu anlamanız için bir örnek vereyim. Debian -- Details of package kate in buster Bağlantıdan ulaşabileceğiniz Debian stable deposundan bir paket. Kate adlı bir metin editörü bu. Eğer bunu kurmak istiyorsanız kısaca .deb (debian) paketini indirip dpkg adlı araçla dümdüz kurabilirsiniz. Ama orada bir durmak lazım, sayfada biraz aşağılara kaydırırsak "dependencies" adlı bir bölüm var. Bu bölümdeki paketler Kate editörünün çalışması için gerekli olan bağımlılıkları temsil ediyor.
1608793787096.png

Gördüğünüz üzere daha geniş bir alanı gösterebilmek için elimden geldiğince küçülttüm ama bu gerekli bağımlılık paketlerinin sadece yarısı. Bu paketlerin hepsini de teker teker kurmak sizce de işkence değil mi? Sırf bir metin editörü kuracağım diye bu kadar uğraş çok değil mi? İşte şimdi APT'nin bize sağladığı nimeti anlayıp değerini bilmeye başlıyoruz, APT bir paketi kurarken tüm bağımlılıklarını gözden geçirip gerekli olanları kendisi kuruyor, ne kadar güzel içiniz rahatladı değil mi?

Bilmemiz ve dikkat etmemiz gereken diğer bir husus ise repository'lerdir. Dağıtımın kendi repository'leri ve dış repository'ler olarak ayırabiliriz. (Yazının kalanında repository yerine "repo" şeklinde hitap edeceğim.) Dağıtımın bize sunduğu repo'lar "stable", "testing" ve "unstable" olur. (Eğer Ubuntu kullanıyorsanız bu "multiverse", "universe" ve "main" gibi adlar alabiliyor, dağıtımdan dağıtıma değişiklik gösterebilir.) Stable: stabil (sorunsuz kullanabileceğiniz repo) Testing: test edilen (test edilen paketler bulunduran) Unstable: stabil olmayan(sorunsuz kullanamayacağınız repo)
Eğer kullandığınız mevcut repo'ları merak ediyorsanız kısaca uçbirime cat /etc/apt/sources.list girin. Size verdiği çıktı kullandığınız repo'lar olacaktır.

APT-Cache​

Öncesinde bahsettiğim gibi APT çevrimiçi olarak paket indirmenizi sağlar, bunun yanısıra çevrimdışı olarak paketler hakkında bilgileri görüntüleme imkanınız da var. Biz bu database'e "cache" diyoruz. Örnek olarak Python paketini tarayalım sistemdeki.
Kod:
 apt-cache search python
Bunun sonucunda upuzun bir sonuç almış olabilirsiniz. Burada adında veya açıklamasında python anahtar kelimesi geçen paketleri gösterdi bize.
Kod:
 apt-cache show python
Bunun sonucunda da python adlı paket hakkında bilgileri alırsınız.

APT-GET​

Artık çevirmiçi kısma gelmiş bulunmaktayız, apt-get ile indirme, kaldırma ve güncelleme gibi işlemleri yapabiliriz.

Güncelleme​

Kod:
 sudo apt-get update
Unutmadan, apt-get sudo yetkisi ister. Bu komutla beraber repo'larınızı güncellemiş oluyorsunuz.

Yükseltme (Güncelleme v2)​

Kod:
 sudo apt-get upgrade
Aslında bu da güncelleme, adına demişler upgrade. Bu komutla beraber programlarınızı güncelleyebilirsiniz. Güncellemeleri bulduktan sonra size "güncellemek istiyor musunuz?" diye bir soru sorar. Siz de "E" yazarsanız günceller.

İndirmek​

Kod:
 sudo apt-get install paket-ismi
Bu komutla istediğiniz paketin adını aratıp repo'lardan bularak indirmiş olursunuz.

Kaldırmak​

Kod:
 sudo apt-get remove paket-ismi
Bu komutla üstteki indirdiğiniz bir paketi kaldırabilirsiniz.

Tamamen Kaldırmak​

Kod:
 sudo apt-get purge paket-ismi
Bu komutla yukarılarda bahsettiğim apt-get ile paketlerin gerekli bağımlılıkları var ya, işte onları da siliyorsunuz.

Gereksiz Bağımlılıkları Temizlemek​

Kod:
 sudo apt-get autoremove
Bu komutla kullanılmayan/gereksiz bağımlılıkları kaldırarak gereksiz yer ve çakışmaya neden olmalarını engelleyebilirsiniz.

Elbette ki artık pek çok son kullanıcı dağıtımında uygulama marketleri var. Bunlar varken işiniz düşmez diye düşünebilirsiniz ama yanılıyorsunuz, elbet bir şey ortaya çıkacak ki o uçbirime bir satır kodu girmek zorunda kalacaksınız. Linux kullanıp bunları bilmemek de ayıptır artık. Birisi sorsa gel şu X paketini yükle diye, siz app market'te bulamadım mı diyeceksiniz? En temelinde Debian tabanlı dağıtımlar için APT budur. Umarım faydalı olmuş veya işinize yaramış, en azından beğenmişsinizdir. Hatalarım, eksiklerim varsa düzeltmekten çekinmeyin, GNU/Linux ile kalın, esenle kalın!
 
Repository'lere eğer güvenliyse hızlı bir şekilde ekleniyor. Programı hazırladığında biri ilk gittiği yer Debian repo'larına eklemek oluyor. Testing'den geçtiği zaman stable repo'ya ekleniyor ve herkes kullanabilmiş oluyor. Bu süreçte güvenilirlik, stabillik gibi birçok şey kontrol ediliyor. Açık kaynak olduğundan her şey önünde zaten eğer ilgiliysen sen de gidip inceleyebilirsin.

Windows'da böyle bir şey söz konusu değil. İnternetten indirdiğin program kimse tarafından onaylanıp koyulmadı oraya, bu nedenle her indirdiğin şey başlı başına bir tehlike arz ediyor. Kapalı kaynak olduğundan içini inceleme fırsatın da yok. Mayın tarlasında yürümek gibi bildiğin.
Eğer onaylamazlarsa kuramaz mıyız? Hem birisi o dediğinizi yapınca diğerleri neden kendi paketlerine uygun hale getirip paket yöneticisine koyuyor? Ayrı ayrı uğraşıyor?
 
Eğer onaylamazlarsa kuramaz mıyız? Hem birisi o dediğinizi yapınca diğerleri neden kendi paketlerine uygun hale getirip paket yöneticisine koyuyor? Ayrı ayrı uğraşıyor?
Kurabilirsin, debian paketi (.deb) olarak kaynağından indirir ve kurarsın. Devamında ne kastettiğinizi anlamadım.
 
Yani uygulamalar test edip onaylıyorlar ya. Niye her paket yöneticisi için ayrı ayrı uğraşılıyor?
Çünkü farklılar, birisi pacman birisi apt öyle düşün. Eğer dediğin gibi olsaydı herkes aynı paket yöneticisini kullanırdı. Bu sefer farklılık diye bir şey kalmazdı. Zaten Debian tabanlı yüzlerce dağıtım var yani, tek canını sıkan bu olsun. 😅
 
Çünkü farklılar, birisi pacman birisi apt öyle düşün. Eğer dediğin gibi olsaydı herkes aynı paket yöneticisini kullanırdı. Bu sefer farklılık diye bir şey kalmazdı. Zaten Debian tabanlı yüzlerce dağıtım var yani, tek canını sıkan bu olsun. 😅
Yok yani. Mesela neden Debian'da Pacman paketindekileri çalıştıramıyoruz? Ayrı bir çalışma prensibi mi var?
 
Yani uygulamalar test edip onaylıyorlar ya. Niye her paket yöneticisi için ayrı ayrı uğraşılıyor?

Ayrı ayrı uğraşılan paket yöneticisi değil, paketlerin kendisidir. Her paketin çeşitli testlerden geçme nedeni sorun yaşamamak ve güvenlik içindir. Yani GNU/Linux'ta programlar öyle denk gele, saldım çayıra mevlam kayıra şeklinde yürümez, çok ciddi testlerden geçerek kullanıcıya ulaşır ve kullanıcı da sudo apt paket-ismi komutuyla istediği programı kurar.
 
Yok yani. Mesela neden Debian'da Pacman paketindekileri çalıştıramıyoruz? Ayrı bir çalışma prensibi mi var?
Pacman Arch tabanlı dağıtımlar için, APT Debian tabanlı dağıtımlar içindir. Bu dağıtımlara göre oturtulmuş paket yöneticileri bunlar.
 
Ayrı ayrı uğraşılan paket yöneticisi değil, paketlerin kendisidir. Her paketin çeşitli testlerden geçme nedeni sorun yaşamamak ve güvenlik içindir. Yani GNU/Linux'ta programlar öyle denk gele, saldım çayıra mevlam kayıra şeklinde yürümez, çok ciddi testlerden geçerek kullanıcıya ulaşır ve kullanıcı da sudo apt paket-ismi komutuyla istediği programı kurar.
Hocam onu demiyorum. Mesela Pacman'e çıkarmak için uğraştılar. Niye APT için de ayrıyeten uğraşılıyor? Her paket yöneticisinin kendisine has çalışma prensibi mi var?
Pacman Arch tabanlı dağıtımlar için, APT Debian tabanlı dağıtımlar içindir. Bu dağıtımlara göre oturtulmuş paket yöneticileri bunlar.
 
Hocam onu demiyorum. Mesela Pacman'e çıkarmak için uğraştılar. Niye APT için de ayrıyeten uğraşılıyor? Her paket yöneticisinin kendisine has çalışma prensibi mi var?
Evet, sonuç aynı olmasına rağmen ulaşma evresi farklıdır her paket yöneticisinin.
 
Hocam onu demiyorum. Mesela Pacman'e çıkarmak için uğraştılar. Niye APT için de ayrıyeten uğraşılıyor? Her paket yöneticisinin kendisine has çalışma prensibi mi var?

Her taban dağıtımın kendine göre paket yöneticisi var, bunun nedeni, bütün tabanlarda kernel Linux olsa da üzerine bindirilen GNU araçlarında tabana göre veya tabanın amacına göre farklılık gösterir. Bu farklılıktan dolayı her paket yöneticisi bütün dağıtımlarda birebir aynı işlemi yapmaz. Örneğin biri ana paketi kurmaya göre diğeri bağımlılıkları da kurmak üzere ayarlanmışsa paket yöneticisi de farklı olmak zorundadır. Kabaca, Ali ve Ayşe nasıl aynı değilse bu da öyledir.
Şimdi "o halde tek paket yöneticisini hepsinde kullanmak üzere yazsınlar" denebilir.
Buna pek gerek olmasa da ayrıca bunun için henüz deneme aşamasında olan Flatpak, Snapd, AppImage gibi çalışmalar var. Şimdilik bu üç çalışmanın hangisi önde tartışması yaşanıyor, ilerde belki genel paket yöneticisi olabilir.
 

Yeni konular

Geri
Yukarı