Linux işletim sistemleri için yazılım, dokümantasyon ve kütüphane gibi bileşenleri kolayca yüklemek, güncellemek ve kaldırmak için çeşitli yollar geliştirmiştir. Bir Linux bilgisayarına program yüklemenin en kolay ve sağlıklı yöntemi paket yöneticisini kullanarak ilgili paketi yüklemektir. Bu kitabın temel aldığı Raspberry Pi işletim sistemi olan Raspberry Pi OS Linux bir Debian türevidir ve paket yöneticisi olarak APT (Advanced Packaging Tool) adındaki aracı kullanır. APT ile yeni paketler yüklenebilir (install), mevcut paketler silinebilir (remove) veya güncellenebilir (update). Hatta tüm işletim sistemi de tek bir komutla güncellenebilir (distro-update).
Raspberry Pi OS paket yöneticisi APT
Paketler depo (REPOsitory) adı verilen sunucularda barındırılır ve apt aracı ilgili paketleri birçok depodan temin edebilir. APT paket yöneticisi paketleri yüklerken veya güncellerken hangi paket depolarının kullanılacağını /etc/apt/sources.list dosyasından öğrenir. sources.list dosyasında paketleri bulunduran sunucuların adresleri (URL) yer alır. Dilerseniz bu dosyaya yeni depo adresleri ekleyerek paket yükleme işlemlerini hızlandırabilir veya resmi depo da olmayan paketleri de yükleme avantajına sahip olabilirsiniz. Yalnız resmi olmayan depolardan yükleyeceğiniz yazılımların uyumsuzluk ve güvenlik sorunları içerebileceğine de dikkat edin.
sources.list dosyasının içeriğine baktığınızda Raspberry Pi OS’un resmi depo adresini görebilirsiniz. Dilerseniz bulunduğunuz coğrafi konuma göre yansılardan birini kullanarak paket indirme hızını da artırabilirsiniz. Depo yansıları birbirinin kopyasıdır ve coğrafi olarak daha yakındaki depo sunucuları daha hızlı hizmet verirler. Kendinize daha yakın bir depo bulmak için resmi yansıların bir listesine şu adresten ulaşabilirsiniz:
https://www.raspbian.org/RaspbianMirrors
1 2 3 4 |
pi@raspberry ~ $ cat /etc/apt/sources.list deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi # Uncomment line below then 'apt update' to enable 'apt source' #deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi |
sources.list dosyasının her satırına bir depo adresi gelecek şekilde depo listenizi zenginleştirebilirsiniz. İkinci satırın başında yer alan # (sharp) karakteri ile etkisiz hale getirilmiş olan deb-src (paketlerin kaynak kodları) satırı, paketlerin kaynak kodlarını da yüklemek ve araştırmak için kullanılır. Yeterince disk alanınız varsa kaynak kodları da Raspberry Pi’a indirebilirsiniz. Yalnız Raspberry Pi’ın sınırlı işlem gücü nedeniyle, kaynak kodların derlemesi sırasında normalden çok daha fazla bekleyeceğinizi unutmayın.
Örneğin Bulgaristan’da bulunan bir depo yansısını, paketleri daha hızlı yüklemek için sources.list dosyasına aşağıdaki gibi ekleyebilirsiniz. Yalnız unutmayın ki paketler öncelikli olarak ilk satırdaki depodan başlanarak yüklenirler.
1 2 |
deb http://raspbian.innobrand.hu/raspbian/ jessie main deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi |
Paketleri yüklemek
apt aracı Raspberry Pi’a yazılım yükleme işini oldukça kolaylaştıran bir araçtır. Bir paketin kurulumunu apt ile beraber, install seçeneğine paketin adını belirterek kolayca gerçekleştirebilirsiniz. Paket depolardan araştırılacak, indirilecek ve otomatik olarak sisteme kurulumu yapılarak kullanıma hazır hale getirilecektir.
1 |
pi@raspberry ~ $ sudo apt install mc |
Yukarıdaki komut ile çok güçlü bir metin/konsol tabanlı dosya yöneticisi olan Midnight Commander’ın yüklenmesi gerçekleştirilmiştir. install seçeneğini kullanarak aynı anda birden fazla paketin yüklemesini de gerçekleştirebilirsiniz. Bunun için paket isimlerini aralarına boşluk bırakarak yazmanız yeterlidir. Paketlerin yüklenmesine başlanmadan önce sizden yükleme onayı istenir. Bu onayın otomatik olarak gerçekleşmesini isterseniz de –y seçeneğini kullanabilirsiniz. Grafik masaüstünün mevcut olduğu sisteme Firefox web tarayıcısını ve Filezilla FTP istemcisini kuran aşağıdaki örneği inceleyin:
1 |
pi@raspberry ~ $ sudo apt install firefox-esr filezilla –y |
Bir paketi sisteme kurmak yerine sadece paket dosyasını ilgili depodan indirmek isteyebilirsiniz. Bunun için download seçeneği kullanılır. Paket o anda bulunulan dizine indirilecektir:
1 |
pi@raspberry ~ $ sudo apt download mc |
Bazı özel durumlarda (en son paketin uyumsuz ya da hatalı olması) paketlerin son sürümü yerine belli sürümlerinin yüklenmesi gerekebilir. Bunun için -t seçeneği kullanılarak paketin sürüm numarasını belirtmek mümkündür:
1 |
pi@raspberry:~ $ sudo apt -t=1.0.11 install paket_adı |
Bir paketin kaynak kodlarını indirmek için download-only ve source seçenekleri kullanılabilir. Bir pakete ait kaynak kodların indirilebilmesi için sources.list dosyasında bir kaynak kod depo adresinin de tanımlı olması gerekir. Bunun için /etc/apt/sources.list dosyasını nano metin editörü ile açarak aşağıdakine benzer şekilde deb-src kaynağının tanımlamasını gerçekleştirin (ilgili satırın başındaki # karakterini silmeniz yeterli olacaktır) ve apt update komutu ile paket önbelleğini güncelleyin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
pi@raspberry ~ $ sudo nano /etc/apt/sources.list #deb http://raspbian.innobrand.hu/raspbian/ jessie main contrib non-free rpi deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi # Uncomment line below then 'apt update' to enable 'apt source' deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi pi@raspberry ~ $ sudo apt update pi@raspberry ~ $ sudo apt --download-only source mc Reading package lists... Done Building dependency tree Reading state information... Done NOTICE: 'mc' packaging is maintained in the 'Git' version control system at: git://anonscm.debian.org/collab-maint/mc.git Need to get 2,284 kB of source archives. Get:1 http://archive.raspbian.org/raspbian/ jessie/main mc 3:4.8.13-3(dsc)[2,229B] Get:2 http://archive.raspbian.org/raspbian/ jessie/main mc 3:4.8.13-3(tar)[2,231kB] Get:3 http://archive.raspbian.org/raspbian/ jessie/main mc 3:4.8.13-3(diff[50.1kB] Fetched 2,284 kB in 4s (469 kB/s) Download complete and in download only mode |
Yukarıdaki örekte mc (Midnight Commander) adlı metin tabanlı dosya gezginine ait paketin kaynak kodları, o anda (komutu yazdığınız sırada) bulunduğunuz dizine indirilecektir.
/etc/apt/sources.list dosyası apt update komutu uygulandığında paket listesinin hangi depo ya da depolardan çekileceğini tanımlamak için kullanılır. Örneğin update komutu verildiğinde Raspberry Pi OS http://mirrordirector.raspbian.org/raspbian/ adresli depoya bağlanarak (depo adresi sources.list içinde tanımlıdır) depodaki paketler hakkındaki meta verileri indirir ve önbelleğine kaydeder (apt cache). sources.list dosyasına Raspbian’ın dışında resmi olmayan özel depo adresleri de tanımlanabilir. Yani, Raspbian’ın birden fazla depo içinde arama yapması ve paket yüklemesi mümkün hale gelir. Yalnızca eklediğiniz depoların güvenilir ve bilinen depolar olduğuna emin olun. Aksi takdirde sisteminizin kararlılığı bozulabilir ya da sisteminize kötücül yazılım bulaşabilir. Eğer sources.list dosyasında birden fazla depo adresi tanımlıysa bunların öncelik seviyesini apt-cache aracına policy seçeneğini vererek görebilirsiniz. Benzer olarak bir paketin öncelikli olarak hangi depodan indirileceğini ya da güncelleneceğini de görebilirsiniz. Bunun için paket adını belirtmeniz yeterlidir.
1 2 3 4 5 6 7 8 9 |
pi@raspberry ~ $ apt-cache policy pi@raspberry ~ $ apt-cache policy mc mc: Installed: 3:4.8.18-1 Candidate: 3:4.8.18-1 Version table: *** 3:4.8.18-1 0 500 http://mirrordirector.raspbian.org/raspbian/ stretch/main armhf Packages 100 /var/lib/dpkg/status |
Sistemde yüklü tüm paketleri görmek için dpkg aracından faydalanılabilir. get-selections seçeneği sistemde yüklü paketleri listeler [1]:
1 2 3 4 5 6 7 8 9 |
pi@raspberry ~ $ dpkg --get-selections acl install adduser install alsa-utils install apache2-bin deinstall apt install apt-utils install aptitude install aptitude-common install |
aptitude paket yöneticisi
Komut satırında, paket işlemlerini gerçekleştirmek için menü tabanlı bir program olan aptitude kullanılabilir. aptitude sahip olduğu kategorik menü sistemi ile yüklü olan ve yüklenebilecek paketleri listeler. Bir paketi ve bağımlı olduğu paketleri yükleyebileceğiniz gibi yüklü olan paketleri de kaldırabilirsiniz.

aptitude paket yöneticisi
Paketleri güncellemek
Hali hazırda sistemde yüklü olan bir paketi güncellemek için –u seçeneğinden faydalanılır. Bu komut eğer paket sistemde yoksa yükler. Eğer paket sistemde yüklü ise sadece güncellemesini uygular. Aşağıdaki komut eğer apache2 sistemde varsa güncellenmesini sağlar, yok ise kurulumunu yapar.
1 |
pi@raspberry ~ $ sudo apt -u install apache2 |
Sistemde yüklü mevcut paketlerin sadece güncellemesini (yükleme yapmadan) gerçekleştirmek için only-upgrade seçeneğinden faydalanılabilir. Aşağıdaki komut apache2 sistemde kurulu ise güncellenmesini sağlar.
1 |
pi@raspberry ~ $ sudo apt install apache2 --only-upgrade |
Sistemdeki tüm paketleri tek seferde güncellemek için full-upgrade seçeneğinden faydalanılır:
1 |
pi@raspberry ~ $ sudo apt full upgrade |
Güncelleme işlemini gerçekleştirmeden sadece güncellemesi hazır paketleri ve sürümlerini görüntülemek için aşağıdaki komut çalıştırılabilir:
1 |
pi@raspberry ~ $ sudo apt --simulate full-upgrade |
Paketleri sistemden kaldırmak
Sistemde yüklü olan bir paketi silmek için iki alternatif komut vardır. Bunlardan ilki paketin kendisini silerken, purge seçeneği ise paket ile gelen kullanıcının düzenlemesine tabi olan yapılandırma (.conf) dosyalarını da sistemden kaldırır.
1 2 |
pi@raspberry ~ $ sudo apt remove apache2 pi@raspberry ~ $ sudo apt --purge remove apache2 |
Yapılandırma dosyalarına sahip programların paketleri eğer purge seçeneği kullanılmadan kaldırılırsa[2] sistemde kalmaya devam ederler. Ancak purge komutu kullanıcının ev dizininde kayıtlı yapılandırma dosyalarına dokunmaz.
remove komutunu install komutu ile yüklediğiniz tüm paketler için kullanabilirsiniz. Bu ikisi kardeş komutlardır.
Sisteme bir paket kurduğunuzda paketin ihtiyacı olan diğer paketler de (bağımlılıklar) yüklenir. Fakat paketi kaldırdığınızda bu bağımlılıklar sistemden kaldırılmayabilir. Artık ihtiyaç olmayan bağlı paketleri de kaldırmak için autoremove seçeneğinden faydalanabilirsiniz:
1 |
pi@raspberry ~ $ sudo apt autoremove |
Sisteme bir paket yüklenirken, apt ilgili paketin .deb uzantılı dosyasını depodan indirerek kurulum işlemini başlatır. Bu işlemin sonucunda kurulum dosyası olan .deb sistemde bulunmaya devam eder. Gereksiz olan ve disk alanı işgal eden bu dosyaları diskten silmek için aşağıdaki komutu kullanın:
1 |
pi@raspberry ~ $ sudo apt autoclean |
Paketleri listelemek ve araştırmak
apt-cache (apt-önbelleği) aracı apt’in kullandığı depolarda yer alan paketlerin detaylı bir listesini tutar. Bu detayın içinde paketin adı, açıklaması, bağımlı olduğu diğer paketler, paketin içindeki dosyaların adları vb. bilgiler yer alır. Örneğin tam adını bilmediğiniz bir paketi bulmak için apt-cache (apt önbelleği) birçok yol sunar. Paket listesini güncelledikten sonra apt-cache ile paket araştırması yapabilirsiniz.
Paket listesinin güncellenmesi işlemi, daha önce sources.list dosyasında adı geçen depo adreslerinin taranarak, tüm paketler hakkındaki bilgilerin yerel paket veri tabanına kaydedilmesi işlemidir. Böylece bir paket yüklenmek istendiğinde en güncel sürümü veya sistemde bağımlı olduğu diğer paketler ile en iyi sürüm uyumu temin edilebilir. Paket veri tabanları güncellenirken apt aracı sources.list dosyasından depoların adreslerini öğrenir ve depolara bağlanarak kendi dağıtımına uygun (örneğin jessie) tüm paketlerin bir listesini kendine kopyalar. Paket veri tabanını güncellemek için ap-get update komutu kullanılır:
1 |
pi@raspberry ~ $ sudo apt update |
apt-cache ile apache2 adındaki paketin var olup olmadığını sorgulamak için aşağıdaki komutu kullanabilirsiniz:
1 |
pi@raspberry ~ $ sudo apt-cache search ^apache2$ |
Yukarıdaki komut tam adı apache2 olan paketi bulmaya çalışır. İsminde apache2 geçen paketleri görmek isterseniz aşağıdaki gibi kullanmalısınız:
1 |
pi@raspberry ~ $ sudo apt-cache search apache2 |
search komutu yalnızca paket adına göre arama yapmaz. Bazen paketlerin içerisinde birden fazla araç bulunabilir. Bu araçlar için de arama yapar. Örneğin kitabın farklı bölümlerde değinilen ve S.M.A.R.T destekli diskleri araştırmak ve sınamak için kullanılan smartctl aracının kendine ait bir paketi yoktur. Bu araç smartmontools paketi içinde gelir. Aşağıdaki search çıktısından aracın hangi paketler içinde bulunduğu görülebilir.
1 2 3 4 5 |
pi@raspberry:~ $ sudo apt-cache search smartctl gsmartcontrol - graphical user interface for smartctl idle3-tools - change the idle3 timer of recent Western Digital Hard Disk Drives libatasmart-bin - ATA S.M.A.R.T. reading and parsing library - utilities smartmontools - control and monitor storage systems using S.M.A.R.T. |
Paket hakkında temel bilgileri listeletmek için show seçeneğine paketin adını verin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
pi@raspberry ~ $ sudo apt-cache show apache2 Package: apache2 Version: 2.4.10-10+deb8u4 Architecture: armhf Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org> Installed-Size: 348 Pre-Depends: dpkg (>= 1.17.14) Depends: lsb-base, procps, perl, mime-support, apache2-bin (= .4.10-10+deb8u4), apache2-utils (>= 2.4), apache2-data (= 2.4.10-10+deb8u4) Recommends: ssl-cert Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-uexec-custom Conflicts: apache2.2-common (<< 2.3~) Breaks: libapache2-mod-macro (<< 1:2.4.6-1~) Replaces: apache2.2-common, libapache2-mod-macro (<< 1:2.4.6-1~) Provides: httpd, httpd-cgi Homepage: http://httpd.apache.org/ Priority: optional Section: httpd Filename: pool/main/a/apache2/apache2_2.4.10-10+deb8u4_armhf.deb Size: 205230 SHA256: 45134322c4e6733ca67a2985585fe4a2d45cce15c2803a8e88cd2b0c25249abe SHA1: 9d28675b738de9ce9e000b2743054fc9b64bc170 MD5sum: ba30a00eb979727617e5fa93d33eb18a Description: Apache HTTP Server The Apache HTTP Server Project's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the number one web server on the Internet. . Installing this package results in a full installation, including the configuration files, init scripts and support scripts. Description-md5: d02426bc360345e5acd45367716dc35c |
Yukarıdaki detaylardan, paketin bağımlı olduğu (depends) diğer paketler, uyumsuz olduğu paketlerin sürüm numarası (conflicts), paketin kurulumu sırasında hangi kütüphanelerin güncelleneceği (replaces), geliştiricinin web sitesi (homepage) gibi zaman zaman kıymetli olabilecek bilgiler yer alır.
Paket hakkında detaylı bilgileri listelemek için showpkg seçeneğine paketin adını verin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
pi@raspberry ~ $ apt-cache showpkg apache2 Package: apache2 Versions: 2.4.10-10+deb8u4 (/var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_jessie_main_binary-armhf_Packages) Description Language: File: /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_jessie_main_binary-armhf_Packages MD5: d02426bc360345e5acd45367716dc35c Reverse Depends: zoph,apache2 zoneminder,apache2 zabbix-frontend-php,apache2 yubikey-val,apache2 wiliki,apache2 whiteboard,apache2 … |
Paketin bağımlı olduğu diğer paketleri görmek için depends seçeneği kullanılabilir:
1 2 3 4 5 6 7 8 9 10 11 |
pi@raspberry ~ $ sudo apt-cache depends apache2 apache2 Depends: lsb-base Depends: procps Depends: perl Depends: mime-support Depends: apache2-bin Depends: apache2-utils Depends: apache2-data PreDepends: dpkg … |
Paket önbelleği hakkında istatistikleri görmek için stats seçeneğini kullanabilirsiniz. Komutun ekran çıktısında paket veri tabanındaki toplam paket sayısını total package names alanında görebilirsiniz. Bu sayı eklenen yeni paketlerle her geçen gün artmaktadır:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
pi@raspberry ~ $ apt-cache stats Total package names: 58328 (1,167 k) Total package structures: 58334 (2,800 k) Normal packages: 45679 Pure virtual packages: 381 Single virtual packages: 4910 Mixed virtual packages: 527 Missing: 6837 Total distinct versions: 46626 (3,357 k) Total distinct descriptions: 46229 (1,109 k) Total dependencies: 285495 (7,994 k) Total ver/file relations: 47216 (755 k) Total Desc/File relations: 46229 (740 k) Total Provides mappings: 7981 (160 k) Total globbed strings: 132 (1,399 ) Total dependency version space: 1,143 k Total slack space: 69.2 k Total space accounted for: 15.1 M |
Grafik ortamda paket işlemleri
Eğer grafik masaüstünü kurmuş ya da etkinleştirmişseniz ihtiyacınız olan paketleri görsel paket yöneticisi ile kurabilir, güncelleyebilir ya da kaldırabilirsiniz. Bunun için Raspberry Pi OS menüsü altındaki Preferences->Add / Remove Software seçeneğine tıklatın. Aşağıdaki gibi bir ekran görüntüsüne sahip paket yükleme yardımcısı açılacaktır.

Paket yöneticisi grafik arayüzünün ekran görüntüsü
Yükleyebileceğiniz paketler Admin tools, Games, Network, System ve Programming gibi türlere ayrılmıştır. Dilerseniz uygun bir kategoriye tıklatarak yüklenebilecek paketleri görebilir, dilerseniz de arama kutusu ile aratabilirsiniz. Arayüzü kullanarak paket yüklemeye başlamadan önce; Options menüsündeki “Refresh Package Lists…” seçeneğine tıklatarak paket listelerini güncelleyin. Paketleri yüklemek için kullanılacak depoları ise “Package Sources…” seçeneğinden görüntüleyebilir ve seçebilirsiniz. Options menü seçeneği altındaki “Check for Updates…” seçeneği sistemde hâlihazırda yüklü paketlerin güncellenmesi için kullanılır. Bunun için Package Updater penceresinin altındaki “Install Updates” butonuna tıklatmanız yeterlidir.
Bir paketi yüklemek istediğiniz de paket adının solundaki işaret kutusunu işaretleyin ve Apply düğmesine tıklatın. Paketin adı seçili olduğunda paket boyutu, lisans türü ve paketin açıklaması arayüzün altında görüntülenir. Paketi kaldırmak için ise paketin işaretini kaldırarak Apply düğmesine tıklatın. Paketin bağımlı olduğu ve ihtiyaç duyduğu diğer paketleri görmek için paket ismine sağ tıklatarak sırasıyla “Dependent Packages” veya “Required Packages” seçeneklerini kullanabilirsiniz.
[1]dpkg –get-selections komut çıktısında karşısında install yazan paketler sistemde hâlihazırda kurulu olan paketlerdir. deinstall yazanlar ise sistemden kaldırılan fakat hala bazı dosyaları sistemde yüklü olan paketleri gösterir. Bu dosyaları tamamen kaldırmak için apt’e purge seçeneği verilmelidir.
[2]dpkg –get-selections komutu ile kalıntısı olan paketleri görebilirsiniz. deselect etiketli paketler geride kalıntı dosyalar bırakan paketlerdir.
