APT Nedir?

Uzun zaman önce, Linux henüz emekleme aşamasındayken, yazılımı dağıtmanın en yaygın yolu sıkıştırılmış bir dosyayı kendiniz açıp kaynak koduyla derlemekti. Bununla birlikte, yazılımın miktarı ve karmaşıklığı arttıkça, önceden derlenmiş yazılımı dağıtmanın bir yoluna duyulan ihtiyaç netleşti. Sonuçta, herkesin Linux çekirdeği veya X Sunucusu gibi büyük projeleri derlemek için hem zaman hem de bilgi işlem gücü açısından kaynakları yoktu.
Kısa süre sonra, bu yazılım “paketlerini” dağıtmanın bir yolunu standartlaştırma çabaları arttı ve ilk paket yöneticileri doğdu. Bu araçlar, bir sistemden yazılım yüklemeyi, yapılandırmayı veya kaldırmayı çok daha kolaylaştırdı.
Bunlardan biri Debian paket formatı (.deb) ve paket aracı (dpkg). oldu. Günümüzde sadece Debian'ın kendisinde değil, Ubuntu ve ondan türetilenler gibi türevlerinde de yaygın olarak kullanılmaktadır. Debian tabanlı sistemlerde popüler olan bir diğer paket yönetim aracı olan apt, paketlerin kurulumunun, bakımının ve kaldırılmasının birçok yönünü kolaylaştırabilen Gelişmiş Paket Aracıdır.
- DPKG, Debian paket yönetim sisteminin temelini oluşturan yazılımdır. dpkg .deb paketlerini yüklemeye, silmeye ve onlar hakkında bilgi toplamaya yarar. dpkg düşük seviyeli bir araçtır. APT gibi yüksek seviyeli araçlar, paketleri uzak kaynaktan çekmeye ve karışık paket ilişkilerini halletmeye yararlar.
- APT, Gelişmiş Paketleme Aracı, Debian GNU/Linux ve Debian tabanlı dağıtımlarda kullanılan paket yönetim sistemidir. APT, önceden derlenmiş dosyalardan ya da kaynak kodlarının derlenmesiyle yazılım paketlerinin alınmasını, yapılandırılmasını ve kurulumunu otomatikleştirerek yazılım yönetme sürecini basitleştirmeyi sağlar.
Gelişmiş Paket Aracı (APT), paket kurulumunu, yükseltmesini, kaldırılmasını ve yönetimini büyük ölçüde basitleştiren bir dizi araç içeren bir paket yönetim sistemidir. APT, gelişmiş arama yetenekleri ve otomatik bağımlılık çözümü gibi özellikler sunar.
APT, dpkg için bir "yedek" değildir. Bunu bir “ön uç” olarak düşünebilir, işlemleri düzene sokabilir ve bağımlılık çözümü gibi dpkg işlevselliğindeki boşlukları doldurabilirsiniz.
APT, yüklenebilecek paketleri içeren yazılım depolarıyla uyumlu çalışır. Bu tür depolar yerel veya uzak bir sunucu veya bir CD-ROM diski bile olabilir.
Debian ve Ubuntu gibi Linux dağıtımları kendi depolarını korur ve diğer depolar, ana dağıtım depolarından erişilemeyen yazılımlar sağlamak için geliştiriciler veya kullanıcı grupları tarafından muhafaza edilebilir.
APT ile etkileşime giren birçok yardımcı program vardır, bunların başlıcaları şunlardır:
- apt-get = paketleri sistemden indirmek, kurmak, yükseltmek veya kaldırmak için kullanılır.
- apt-cache = paket dizininde arama gibi işlemleri gerçekleştirmek için kullanılır.
- apt-file = paketlerin içindeki dosyaları aramak için kullanılır.
Ayrıca, en çok kullanılan apt-get ve apt-cache seçeneklerini tek bir yardımcı programda birleştiren apt adlı “daha dostça” bir yardımcı program da vardır. Apt komutlarının çoğu, apt-get komutlarıyla aynıdır, bu nedenle çoğu durumda birbirinin yerine geçebilirler. Ancak, apt bir sisteme yüklenemeyebileceğinden, apt-get ve apt-cache'in nasıl kullanılacağını öğrenmeniz önerilir.
apt ve apt-get bir ağ bağlantısı gerektirebilir, çünkü paketlerin ve paket dizinlerinin uzak bir sunucudan indirilmesi gerekebilir.
Paket İndeksinin Güncellenmesi
Sistem Paketleri Nasıl Güncellenir.
Paket yönetim, sistemde kurulu paketler, kurulu olmayan paketler, kurulabilir paketler vb. hakkında bilgileri kendi özel veritabanında tutmaktadır. apt-get programı bu veritabanını kullanarak istenilen paketin nasıl kurulacağını, başka hangi paketlerin daha kurulması gerektiğini öğrenir. Bu listeyi güncellemek için apt-get update komutunu kullanmalısınız. Bu komut /etc/apt/sources.list dosyanıza bakar ve belirtilen arşivlerden güncel paket listesini indirir.
Paket güncellemeleri ve güvenlikle ilgili güncellemelerden sizin ve sisteminizin haberdar olabilmesi için bu komutu düzenli aralıklarla çalıştırmakta fayda vardır
apt ile yazılım yüklemeden veya yükseltmeden önce, yeni ve güncellenmiş paketler hakkında bilgi almak için önce paket dizininin güncellenmesi önerilir. Bu, apt-get veya apt komutu ve ardından update parametresi ile yapılır.
Örneğin, sisteminize nano editörünü yükleyeceksiniz. Eğer paket indeksiniz eski ise nano 2.0 yükleyecektir. Ancak güncel depo'da nano 2.2 vardır. İşte, en güncel sürümü yüklemek için paket indeksinizin güncel olması önerilir. Unutmayın paket indeksinizi güncellemek, herhangi bir uygulamanızı güncellemez. (Debian|Ubuntu)
apt update

Depo Üzerinde Tüm Paketleri Listelenmesi
Hangi paketleri yükleyebileceğimizi ve tüm paketlerin sürümlerine bakalım.
apt list
Uygulama ismi belirterek, belirli paketlere de bakabiliriz.
apt list | grep wireshark
Sistemdeki Yüklü Paketleri Görmek
Sistem üzerindeki, tüm paket ve çekirdekleri aşağıdaki komutu çalıştırarak görebiliriz.
dpkg -l

Tüm yüklü paketlerin sayısına bakabiliriz.
dpkg -l | wc -l

Belirli bir paketi arayabilirsiniz.
dpkg -l | grep -i nano
dpkg -l | grep -i sudo

Paketleri Yükleme
Paket dizini güncellendiğinde artık bir paket yükleyebilirsiniz. Bunu yapmak için, apt-get install ve ardından kurmak istediğiniz paket adını yazmanız yeterlidir.
Ayrıca apt-get yerine sadece apt yani apt install ve apt remove kullanabilirsiniz.
apt install gedit
gedit, GNOME masaüstü ortamı için tasarlanmış bir metin editörüdür.

Özel karakter kullanarak paket kurmak
Eğer birden fazla paket var ise özel karakter kullanarak toplu bir şekilde kurabiliriz.
sudo apt-get install samba*
Yükseltme olmadan yazılım paketi kurmak
--no-upgrade komutunun kullanılması, önceden kurulmuş paketlerin yükseltilmesini engelleyecektir.
sudo apt-get install nano --no-upgrade
Yalnızca belirli paketleri yükseltme
--only-upgrade sadece önceden kurulmuş paketleri yükseltir ve yeni paketler yüklenmez. Yani nano ve kurulu paketler yüklenir ,yeni paket kurulmaz.
sudo apt-get install nano --only-upgrade
Belirli bir sürümü yükleme
Paketlerin belirli bir sürümünü yüklemek istediğimizi varsayalım, paket adıyla = istenen sürümü ekleyin.
sudo apt-get install nano=2.3.6-3ubuntu1
Yazılım Paketini Kurmadan İndirmek
download parametresi ile herhangi bir paketi kurmadan indirebilirsiniz.
sudo apt-get download nan
Paket Kaldırma
Benzer şekilde, bir paketi kaldırmak için apt-get remove ve ardından kaldırmak istediğiniz paket adını yazmanız yeterlidir.
Apt kullanırken, yaptığınız işlemlere devam etmek için y/n yes ve no seçeneğini sormasını istemiyorsanız aşağıdaki seçenekleri kullanabilirsiniz. Hepsi aynı yola çıkacaktır.
apt-get remove gedit
apt-get -y remove gedit
apt-get remove gedit -y

Bağımlı Paketleri Yükleme ve Kaldırma
Paketleri kurarken veya kaldırırken APT'nin otomatik bağımlılık çözümlemesi yapacağını unutmayın. Bu, kurmakta olduğunuz paketin ihtiyaç duyduğu ek paketlerin de kurulacağı ve kaldırdığınız pakete bağlı paketlerin de kaldırılacağı anlamına gelir . APT, devam etmek isteyip istemediğinizi sormadan önce nelerin kurulacağını veya kaldırılacağını her zaman gösterecektir.
sudo apt remove p7zip

Yapılandırma Dosyaları Dahil Paketleri Kaldırma
Bir paket kaldırıldığında, ilgili yapılandırma dosyalarının sistemde kaldığını unutmayın. Paketi ve tüm yapılandırma dosyalarını kaldırmak için remove yerine temizle parametresini --purge seçeneğiyle kullanın.
apt-get purge p7zip

Bozuk Bağımlılıkları Düzeltme
Bir sistemde “bozuk bağımlılıklara” sahip olmak mümkündür. Bu, yüklü paketlerden bir veya daha fazlasının, yüklenmemiş veya artık mevcut olmayan diğer paketlere bağlı olduğu anlamına gelir. Bu, bir APT hatası veya el ile yüklenmiş bir paket nedeniyle olabilir.
Bunu çözmek için apt install -f komutunu kullanın. Bu, eksik bağımlılıkları yükleyerek bozuk paketleri “düzeltmeye" çalışacak ve tüm paketlerin tekrar tutarlı olmasını sağlayacaktır.
apt install -f

Güncellenecek paketleri görmek
Yazılımları güncellemeden önce hangi sürüme geçeceğini önceden görebiliriz. Tüm listeye bakabiliriz.
apt list --upgradable
Belirli bir uygulamaya bakabiliriz.
apt list --upgradable | grep -i nano*
Paketi Yükseltme
Paket yüklemek ile aynı komutu kullandığımızda eğer bir güncelleme var ise otomatik olarak bulacaktır ve izin verdiğimiz taktirde güncelleyecektir.
sudo apt-get install nano
Tüm Paketlerin Yükseltilmesi
APT, yüklü paketleri depolardan erişilebilen en son sürümlere otomatik olarak yükseltmek için kullanılabilir. Bunu, apt-get upgrade komutu ile yapılır. Çalıştırmadan önce paket dizinini apt-get update ile güncelleyin.
Paketleri yükseltmek, çalışan uygulamalarınızı bozabilir. Bu işlemi yapmadan önce, sunucunun snapshot/checkpoint almanız önerilir.
apt update
apt upgrade

Yukarıdaki çıktının altındaki özet, kaç paketin yükseltileceğini, kaç paketin yükleneceğini, kaldırılacağını veya saklanacağını, toplam indirme boyutunu ve işlemi tamamlamak için ne kadar ekstra disk alanına ihtiyaç duyulacağını gösterir. Yükseltmeyi tamamlamak için Y yazıp enter tuşuna basın görevin bitirmesini bekleyin.
Tek bir paketi yükseltmek için, paket yükleme komutu olan apt install ve yükseltmek istediğiniz paket adını yazmanız yeterlidir. Dpkg'de olduğu gibi, apt-get önce bir paketin önceki bir sürümünün yüklü olup olmadığını kontrol eder. Bu durumda, paket depoda bulunan en yeni sürüme yükseltilecektir. Değilse, yeni bir kopya yüklenir.
apt install snapd

Yerel Önbellek Temizleme
Bir paketi yüklediğinizde veya güncellediğinizde, ilgili .paket yüklenmeden önce deb dosyası yerel bir önbellek dizinine yüklenir. Varsayılan olarak, bu dizin /var/cache/apt/archives dizinidir. Kısmen indirilen dosyalar /var/cache/apt/archives/partial/ dosyasına kopyalanır.

Paketleri kurup yükselttikçe önbellek dizini oldukça büyüyebilir. Alanı geri kazanmak için apt-get clean komutunu kullanarak önbelleği boşaltabilirsiniz. Bu, /var/cache/apt/archives ve /var/cache/apt/archives/partial/ dizinlerinin içeriğini kaldıracaktır.
apt clean

Paket Arama
apt-cache yardımcı programı, belirli bir paketi aramak veya hangi paketlerin belirli bir dosyayı içerdiğini listelemek gibi paket dizini üzerinde işlemler gerçekleştirmek için kullanılabilir.
Arama yapmak için apt-cache aramasını ve ardından bir arama modelini kullanın. Çıktı, paket adı, açıklaması veya sağlanan dosyalarda deseni içeren her paketin bir listesi olacaktır.
apt-cache search p7zip

Yukarıdaki örnekte, liblzma5 - XZ biçimindeki sıkıştırma kitaplığı girdisi desenle eşleşmiyor gibi görünüyor. Ancak, show parametresini kullanarak paketin açıklaması da dahil olmak üzere tüm bilgileri gösterirsek, kalıbı orada bulacağız.
apt-cache show liblzma5

apt-cache search yerine apt search ve apt-cache show yerine apt show da kullanabilirsiniz.
Paket ve Çekirdek Güncelleme Almasını Engelleme
Belirlediğimiz paketleri belli durumlar için güncellenmemesini sağlayabiliriz. Sonlarına glob karakter olan asterisk “*” ekleyerek o paket ile ilgili tüm paketleri hariç tutabilirsiniz.
sudo apt-mark hold nano
sudo apt-mark hold nano*
Güncellenmeyecek paketleri görmek
apt-mark showhold
Paketleri güncellemeye tekrar açalım
apt-mark unhold nano
İşletim Sistemini Güncellemek
APT'nin bu özelliği sayesinde bir defada tüm sisteminizi yeni bir Debian sürümüne ister internet üzerinden isterse varolan bir CD üzerinden yükseltebilirsiniz. Ayrıca bu yöntem kurulu paketler arasındaki paket bağımlılıklarında değişmeler olduğunda da kullanılır. apt-get upgrade ile yapılan güncellemelerde bu tür paketlere dokunulmaz.
sudo apt-get -u dist-upgrade