[ önceki ] [ İçindekiler ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ sonraki ]


APT NASIL
Bölüm 3 - Paketlerin yönetimi


3.1 Paket listesini güncelleme

Paket yönetim sistemi 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; ayrıntılı bilgi için bkz. /etc/apt/sources.list dosyası, Kısım 2.1.

Paket güncellemeri 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.


3.2 Paket kurma

Sonunda sabırsızlıkla beklediğiniz bölüme geldik! Artık sources.list dosyanız hazır ve paket listeniz güncel durumda. Tek yapmanız gereken kuracağınız paketi belirtmek. Örneğin:

     # apt-get install xchat

APT hemen kendi veritabanını tarayarak bu paketin en son versiyonunu bulacak ve sources.list dosyanızda belirtilen arşivden indirmeye başlayacaktır. Bu paketin başka paketlere de bağımlı olması durumunda - ki örneğimizde de öyle - aynı adımları bağımlılık yaratan paketler için de yapacaktır. Aşağıdaki örneğe bakınız:

     # apt-get install nautilus
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 0 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 17.2MB will be used.
     Do you want to continue? [Y/n]

nautilus paketi bazı kütüphane paketlerine bağımlı durumdadır. Eğer bağımlılık yaratan paketleri de komutumuza eklemiş olsaydık APT devam etmek istiyor musunuz? sorusunu sormayacak ve hemen paketleri indirmeye başlayacaktı.

Bunun anlamı APT'nin sadece komut satırında belirtilmeyen ancak gereken paketleri de kurmak istediği zaman onay isteyeceğidir.

Aşağıdaki apt-get seçenekleri işinize yarayabilir:

     -h  Yardım ekranı.
     -d  Sadece indir , kurulumu yapma
     -f  Bütünlük kontrolü başarısız olsa da devam etmeye çalış
     -s  Hiçbir eylem yapma, sadece olayı simüle et
     -y  Tüm sorulara Evet cevabı verdiğimi farzet
     -u  İşlem sonucunda güncellenecek olan paketleri listele

Birden fazla paket kurulmak üzere tek satırda seçim yapılabilir. Gerekli paketler indirilir ve /var/cache/apt/archives dizini altına ilerideki kurulumlarda da kullanılmak üzere kaydedilir.

Aynı komut satırında kaldırılmasını istediğiniz paketleri de belirtebilirsiniz. Bunun için kaldırmak istediğiniz paketin ismini sonuna bir '-' karakteri ekleyerek yazmanız yeterli:

     # apt-get install nautilus gnome-panel-       
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

Paket kaldırmayla ilgili bilgiler için Paket kaldırma, Kısım 3.3 kısmına bakınız.

Eğer herhangi bir şekilde kurulu bir paketin dosyalarına zarar verdiyseniz veya sadece kurulu bir paketin yeniden indirilip tekrar kurulmasını istiyorsanız --reinstall seçeneğini örnekteki gibi kullanmalısınız.

     # apt-get --reinstall install gdm
     Reading Package Lists... Done
     Building Dependency Tree... Done
     0 packages upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 1  not upgraded.
     Need to get 0B/182kB of archives. After unpacking 0B will be used.
     Do you want to continue? [Y/n]

Bu yardım belgesinin yazımında APT versiyonu 0.5.3 idi. Eğer sisteminizde bu veya daha üst versiyon APT varsa ek bazı fonksiyonlara sahipsiniz: paketleri belirli bir dağıtım arşivinden apt-get install paket/dağıtım komutu ile kurabilir veya apt-get install paket=versiyon komutu ile spesifik bir versiyonunu kurabilirsiniz. Örneğin:

     # apt-get install nautilus/unstable

komutu siz `stable' dağıtımla çalışıyor olsanız bile nautilus paketini `unstable' dağıtımından kuracaktır. Dağıtım alanı için kabul edilen değerler stable, testing, ve unstable'dır.

Hedef dağıtım seçerken -t anahtarını da kullanabilirsiniz, bu durumda apt-get bağımlılıkları bu dağıtıma göre düzenleyecektir.

ÖNEMLİ: `unstable' dağıtım yeni Debian paketlerinin upload edildiği yerdir. Çok sık güncellen bu arşiv yeni başlayanlar veya sisteminde kararlılık arayanlar tarafından kullanılmamalıdır.

`testing' dağıtımı `unstable' dağıtımdan kararlılık anlamında çok daha iyidir, ancak kritik sistemlerde mutlaka kararlı dağıtım kullanılmalıdır.


3.3 Paket kaldırma

Bir paketi artık kullanmak istemiyorsanız APT ile sisteminizden paketi kaldırabilirsiniz. Bunun için apt-get remove package komutunu vermeniz yeterli olacaktır. Örneğin:

     # apt-get remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets gnome-panel gnome-panel-data gnome-session 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

Yukarıda da görüldüğü üzere APT kaldırılan pakete bağımlı olan paketler üzerinde de işlem yapmaktadır. Yukarıdaki soruyu onayladığınızda listelenen tüm paketler kaldırılacaktır. APT kullanarak bir paketi, o pakete bağımlı olan diğer paketleri kaldırmadan kaldırmanın :) bir yolu yoktur.

apt-get'in yukarıdaki gibi çalıştırılması sonrasında listelenen paketler sistemden kaldırılacak ancak paketlere ait konfigürasyon dosyaları -eğer varsa- sistemde kalacaktır. Konfigürasyon dosyaları ile birlikte paketleri tamamen kaldırmak için aşağıdaki komutu çalıştırın:

     # apt-get --purge remove gnome-panel
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     0 packages upgraded, 0 newly installed, 4 to remove and 1  not upgraded.
     Need to get 0B of archives. After unpacking 14.6MB will be freed.
     Do you want to continue? [Y/n]

Burada isminden sonra '*' karakteri olan paketlere ait konfigürasyon dosyalarının da kaldırılacağını anlıyoruz.

Kurulum install yönteminde olduğu gibi kaldırma remove işleminde de aynı satırda kurmak istediğiniz paketleri belirtebilirsiniz. Bunun için kurulmasını istediğiniz paketin sonuna '+' karakteri eklemeniz gereklidir.

     # apt-get --purge remove gnome-panel nautilus+
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     The following packages will be REMOVED:
       gnome-applets* gnome-panel* gnome-panel-data* gnome-session* 
     The following NEW packages will be installed:
       bonobo libmedusa0 libnautilus0 nautilus 
     0 packages upgraded, 4 newly installed, 4 to remove and 1  not upgraded.
     Need to get 8329kB of archives. After unpacking 2594kB will be used.
     Do you want to continue? [Y/n]

apt-get burada kaldırma işleminin yanı sıra kurulmasını istediğimiz paketi ve gerektirdiği diğer paketlerle birlikte listeler.


3.4 Paket güncelleme

Paket güncellemeleri APT'nin çok başarılı olduğu bir işlemdir. Tek bir apt-get upgrade komutu ile tüm paketlerin güncellenmesi sağlanabilmektedir. Bu komutu, sisteminizdeki paketleri kullandığınız dağıtımdaki programların güncel sürümlerine yükseltmek veya tümüyle yeni bir Debian sürümüne yükseltme yapmak amacıyla kullanabilirsiniz. Dağıtım yükseltmeleri için önerilen yol apt-get dist-upgrade kullanılmasıdır;; ayrıntılar için Yeni bir sürüme güncelleme, Kısım 3.5 kısmına bakınız.

Komutun -u seçeneği ile çalıştırılması oldukça yararlıdır. Bu seçeneğin kullanımıyla APT güncellenecek paketleri listeler. APT paketlerin en son versiyonlarını indirecek ve gereken sırada kurulumu gerçekleştirecektir. Böylesi bir güncelleme yapmadan önce apt-get update komutu ile paket listenizi de güncellemeniz önemlidir. Aşağıdaki örneğe bakalım:

     # apt-get -u upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages have been kept back
       cpp gcc lilo 
     The following packages will be upgraded
       adduser ae apt autoconf debhelper dpkg-dev esound esound-common ftp indent
       ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0 libesd0-dev
       libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev liborbit0
       libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit procps psmisc 
     29 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
     Need to get 5055B/5055kB of archives. After unpacking 1161kB will be used.
     Do you want to continue? [Y/n]

İşlem oldukça basittir. İlk bir kaç satırda apt-get bazı programların sistemde tutulmaya devam edileceğini kept back söylemektedir. Bunun anlamı, listelenen programların yeni versiyonları olmasına rağmen herhangi bir nedenden ötürü sisteminize kurulamayacak olmasıdır. Büyük olasılıkla ilgili paketler, paket listenizde yer almayan paketlerin veya paket versiyonlarının kurulmasını gerektirmekte, bu işlem yapılamayacağı için de paketler güncellenmemektedir. İkinci olası neden, paketin yeni versiyonunun sisteminizde daha önce olmayan yeni bir pakete bağımlı olmadır.

Birinci senaryo için kesin bir çözüm yoktur. İkinci durumda problem yaratan paketi apt-get install komutu ile kurarak sorunu çözebilirsiniz. Daha temiz bir yöntem ise dist-upgrade kullanmaktır, bu sayede sistemde daha önce olmayan yeni paketler de kurulacaktır, bkz. Yeni bir sürüme güncelleme, Kısım 3.5.


3.5 Yeni bir sürüme güncelleme

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.

Örnek olarak, Debian 0 sürümünü kullandığınızı düşünün, ve 3. sürümü içeren bir CD edinmiş olun. APT'yi kullanarak sisteminizi bu CD üzerinden yeni sürüme güncelleyebilirsiniz. Bunu yapmak için öncelikle apt-cdrom ile (bkz. sources.list dosyasına CD-ROM ekleme, Kısım 2.4) ile CD'yi /etc/apt/sources.list dosyanıza ekleyin ve ardından apt-get dist-upgrade komutunu çalıştırın.

Unutmayın, APT her zaman paketin güncel versiyonunu arar. Eğer /etc/apt/sources.list dosyanızda belirtilen arşivlerde bir paketin CD üzerindekinden daha yeni bir versiyonu var ise güncelleme sırasında bu versiyon kullanılacaktır.

Paket güncelleme, Kısım 3.4 kısmındaki örneğimizde bazı paketlerin güncelleme sırasında korunduğunu kept back görmüştük. Bu problemi şimdi dist-upgrade ile çözebiliriz:

     # apt-get -u dist-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following NEW packages will be installed:
       cpp-2.95 cron exim gcc-2.95 libident libopenldap-runtime libopenldap1
       libpcre2 logrotate mailx 
     The following packages have been kept back
       lilo 
     The following packages will be upgraded
       adduser ae apt autoconf cpp debhelper dpkg-dev esound esound-common ftp gcc
       indent ipchains isapnptools libaudiofile-dev libaudiofile0 libesd0
       libesd0-dev libgtk1.2 libgtk1.2-dev liblockfile1 libnewt0 liborbit-dev
       liborbit0 libstdc++2.10-glibc2.2 libtiff3g libtiff3g-dev modconf orbit
       procps psmisc 
     31 packages upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
     Need to get 0B/7098kB of archives. After unpacking 3118kB will be used.
     Do you want to continue? [Y/n]

Görüldüğü gibi paketler hem güncellenecek hem de yeni bağımlılıklar için yeni paketler de kurulacaktır. Ancak lilo paketi halen sistemde korunmaya devam etmektedir kept back. Muhtemelen bağımlılık dışında daha ciddi bir problemi vardır. Problemin ne olduğunu aşağıdaki komutla görebiliriz:

     # apt-get -u install lilo
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following extra packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be REMOVED:
       debconf-tiny 
     The following NEW packages will be installed:
       cron debconf exim libident libopenldap-runtime libopenldap1 libpcre2
       logrotate mailx 
     The following packages will be upgraded
       lilo 
     1 packages upgraded, 9 newly installed, 1 to remove and 31 not upgraded.
     Need to get 225kB/1179kB of archives. After unpacking 2659kB will be used.
     Do you want to continue? [Y/n]

Yukarıdaki belirtildiği üzere, lilo paketi debconf-tiny paketi ile çakışmaktadır. Bunun anlamı, debconf-tiny paketi kaldırılmadan lilo paketinin yüklenemeyeceği ve güncellenemeyeceğidir.

Korunan veya kaldırılan paketlerle ilgili daha detaylı bilgi almak için komutu aşağıdaki gibi kullanabilirsiniz:

     # apt-get -o Debug::pkgProblemResolver=yes dist-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Starting
     Starting 2
     Investigating python1.5
     Package python1.5 has broken dep on python1.5-base
       Considering python1.5-base 0 as a solution to python1.5 0
       Holding Back python1.5 rather than change python1.5-base
     Investigating python1.5-dev
     Package python1.5-dev has broken dep on python1.5
       Considering python1.5 0 as a solution to python1.5-dev 0
       Holding Back python1.5-dev rather than change python1.5
      Try to Re-Instate python1.5-dev
     Done
     Done
     The following packages have been kept back
       gs python1.5-dev 
     0 packages upgraded, 0 newly installed, 0 to remove and 2  not upgraded.

Burada açıkça görüldüğü gibi python1.5-dev paketi kurulamayacaktır çünkü python1.5 paketine bağımlıdır. python1.5 kurulamadığı için python1.5-dev paketi de kurulamamaktadır.


3.6 Kullanılmayan paket dosyalarını temizleme: apt-get clean ve autoclean

Bir paket kuracağınız zaman APT gerekli dosyaları /etc/apt/sources.list dosyanızda belirtilen host'lardan alır ve yerel bir dizin (/var/cache/apt/archives/) altında saklar. Ardından kurulumu buradaki dosyalar üzerinden gerçekleştirir, bkz. Paket kurma, Kısım 3.2.

Zamanla dosyaların tutulduğu yerel dizinin boyutları artmaya ve gereksiz yer kaplamaya başlar. APT bu dizini temizlemek için bir takım fonksiyonlara sahiptir: apt-get'in clean ve autoclean seçenekleri.

apt-get clean lock dosyaları haricinde /var/cache/apt/archives/ ve /var/cache/apt/archives/partial/ dizinlerindeki tüm dosyları siler. Sonuç olarak, eğer bir paketi yeniden kurmak isterseniz (--reinstall) APT gerekli dosyalara artık sahip olmadığından, yeninden indirecektir.

apt-get autoclean ise sadece artık indirilmesi mümkün olmayan dosyaları siler.

Aşağıdaki örnek apt-get autoclean özelliğinin nasıl çalıştığını gösteriyor:

     # ls /var/cache/apt/archives/logrotate* /var/cache/apt/archives/gpm*
     logrotate_3.5.9-7_i386.deb
     logrotate_3.5.9-8_i386.deb
     gpm_1.19.6-11_i386.deb

/var/cache/apt/archives altında logrotate paketi için 2 dosya ve gpm paketi için de bir 1 dosya bulunmaktadır.

     # apt-show-versions -p logrotate
     logrotate/stable uptodate 3.5.9-8
     # apt-show-versions -p gpm
     gpm/stable upgradeable from 1.19.6-11 to 1.19.6-12

apt-show-versions çıktısına baktığımızda logrotate_3.5.9-8_i386.deb dosyasının logrotate paketi için güncel versiyon olduğunu görüyoruz. Bu durumda logrotate_3.5.9-7_i386.deb dosyası hiç bir işe yaramamaktadır. Ayrıca gpm_1.19.6-11_i386.deb dosyası da, indirilebilecek daha güncel bir versiyonu olduğu için işe yaramamaktadır.

     # apt-get autoclean
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Del gpm 1.19.6-11 [145kB]
     Del logrotate 3.5.9-7 [26.5kB]

Sonuçta, apt-get autoclean ile sadece eski ve işe yaramayacak dosyaların kaldırılmasını sağlamış olduk, bkz. Sadece belirli bir Debian versiyonuna sahip paketleri güncelleme, Kısım 3.9.


3.7 APT ile dselect kullanımı

dselect, kurulum için Debian paketleri seçebileceğiniz bir programdır. Kullanımı oldukça karışık ve zor olduğundan yeni kullanıcılar bazen program içerisinde yönlerini kaybedebilirler.

dselect'in özelliklerinden biri, Debian paketlerinin "şiddetle önerilen" ve "tavsiye edilen" paketlere ait bilgilerini işleyebilmesidir ("recommending" ve "suggesting"). Programı çalıştırmak için root iken dselect komutunu verin. Erişim yöntemleri menüsünden 'apt' seçimini yapın. Mutlaka gerekli olmamakla birlikte, eğer bir CDROM kullanmıyor ve paket indirmek istiyorsanız erişim yöntemi olarak 'apt' kullanmalısınız.

dselect kullanımı hakkında ayrıntılı bilgi almak isterseniz dselect dokümantasyonunun bulunduğu http://www.debian.org/doc/ddp adresini ziyaret edebilirsiniz.

dselect ile seçimlerinizi yaptıktan sonra, aşağıdaki komutu çalıştırın:

     # apt-get -u dselect-upgrade

Örnek:

     # apt-get -u dselect-upgrade
     Reading Package Lists... Done
     Building Dependency Tree... Done
     The following packages will be REMOVED:
       lbxproxy 
     The following NEW packages will be installed:
       bonobo console-tools-libs cpp-3.0 enscript expat fingerd gcc-3.0
       gcc-3.0-base icepref klogd libdigest-md5-perl libfnlib0 libft-perl
       libgc5-dev libgcc300 libhtml-clean-perl libltdl0-dev libsasl-modules
       libstdc++3.0 metamail nethack proftpd-doc psfontmgr python-newt talk tidy
       util-linux-locales vacation xbill xplanet-images 
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 30 newly installed, 1 to remove and 0  not upgraded.
     Need to get 7140kB of archives. After unpacking 16.3MB will be used.
     Do you want to continue? [Y/n]

Şimdi bu ekran çıktısını aynı sistemdeki apt-get dist-upgrade çıktısı ile karşılaştıralım:

     # apt-get -u dist-upgrade   
     Reading Package Lists... Done
     Building Dependency Tree... Done
     Calculating Upgrade... Done
     The following packages will be upgraded
       debian-policy 
     1 packages upgraded, 0 newly installed, 0 to remove and 0  not upgraded.
     Need to get 421kB of archives. After unpacking 25.6kB will be freed.
     Do you want to continue? [Y/n]

Görüldüğü gibi dselect ile yapılan güncellemede yukarıdaki listede olmayan paketler de yüklenmek üzere seçilmiştir. Çünkü güncellenecek olan paketlerin "şiddetle önerilen" ve "tavsiye edilen" paketler alanları da incelenmiş, bu paketler listeye dahil edilmiştir. Dselect APT ile birlikte kullanıldığında oldukça güçlü bir araçtır.


3.8 Karışık bir sistem nasıl kurulur?

Kullanıcılar sıklıkla testing dağıtımını da kullanırlar, çünkü testing dağıtımı, kararsız dağıtımdan çok daha kararlı bir yapıya sahiptir ve kullanılabilir durumdadır. Bazı kullanıcılar ise sistemlerindeki bazı paketlerin son versiyonlarını kullanmak isterler. Bu durumda testing/unstable karışımı bir sistem oluşabilir. Gene aynı şekilde başka nedenlerden ötürü stable/testing karışımı bir dağıtım da oluşturulabilir.

Bunu yapabilmek için aşağıdaki satırı /etc/apt/apt.conf dosyanıza ekleyin:

     APT::Default-Release "testing";

Ardından, unstable dağıtımdan bir paket yüklemek istediğinizde -t seçeneğini kullanın:

     # apt-get -t unstable install paket_adı

Kullanacağınız her bir dağıtım için /etc/apt/sources.list dosyasına gerekli kayıtları girmelisiniz. Bu örnekte dosyada unstable ve testing dağıtımı için gerekli kayıtlar olmalıdır. Bu kayıtlar olmadan APT, ilgili dağıtımdaki bir pakete ait bilgiye sahip olamaz.


3.9 Sadece belirli bir Debian versiyonuna sahip paketleri güncelleme

apt-show-versions programı, karışık bir sistem kullanan kullanıcıların sistemlerini güncellemelerinde daha güvenli bir ortam sunar. Örneğin aşağıdaki gibi sadece sisteminizdeki unstable paketleri güncelleyebilirsiniz:

     # apt-get install `apt-show-versions -u -b | grep unstable`

3.10 Belirli bir versiyona sahip paketlerin kurulu olarak kalmasını sağlama (ileri düzey)

Bazen çeşitli nedenlerden ötürü bir paketin mutlaka belirli bir versiyonu ile çalışmanız gerekebilir. Güncelleme yaptığınızda ise paket yeni versiyonu ile değiştirileceğinden sorun çıkacaktır. Örneğin sisteminizi Debian 3.0 sürümüne güncellemiş fakat belirli bir paketin Debian 2.2 sürümündeki halini kullanmaya devam etmek istiyor olabilirsiniz. Bu problemi çözmek için paketlerinizi "pin"leyebilirsiniz.

Bu özelliği kullanmak oldukça kolaydır, tek yapmanız gereken /etc/apt/preferences dosyasını düzenlemekten ibaret.

Dosyanın formatı şu şekildedir:

     Package: <paket_adı>
     Pin: <pin tanımlaması>
     Pin-Priority: <pin önceliği>

Örnek olarak, sylpheed paketinin 0.4.99 versiyonunu korumak isterseniz aşağıdaki kayıtı buraya ekleyebilirsiniz:

     Package: sylpheed
     Pin: version 0.4.99*

Buradaki * kullanımına dikkat! Bu karakter ile girdiğimiz pin değerinin tüm 0.4.99 ile başlayan versiyonlar için geçerli olduğunu belirtebiliyoruz. Bu sayede program versiyonunun yanı sıra paketin Debian paket versiyonunun değişmesi durumunda da koyduğunuz kurallar geçerli olur, örneğin 0.4.99-1 versiyonu ile 0.4.99-10 versiyonu.

Pin-Priority alanı seçime bağlıdır, girilmediği takdirde öntanımlı değeri 989'dur.

Şimdi de pin önceliklerinin nasıl çalıştığına bakalım. 0 değerinden daha küçük bir önceliğin anlamı paketin hiç bir zaman kurulamayacağıdır. 0 ile 100 arasındaki öncelikler paketin kurulmadığını ve erişilebilir yeni versiyonu olmadığını belirtir. 100 öncelik değeri kurulu olan pakete tanımlanır, paketin kurulu versiyonu yeni bir versiyon ile değiştirilebilir, fakat yeni versiyonun 100'den daha büyük bir önceliğe sahip olması gereklidir.

Öncelik değeri 100'den büyükse paket kurulmalıdır. Tipik olarak paketin kurulu versiyonu sadece daha yeni bir versiyona güncelleme ile değişir. Böyle bir önceliğe sahip paket, daha düşük versiyonu ile değiştirilemez (downgrade). Örneğin, eğer sylpheed 0.5.3 versiyonu kurulu ve sylpheed 0.4.99 versiyonu için önceliği 999 olan bir pin tanımlı ise, 0.4.99 paketi bu pin dolayısıyla kurulamayacaktır. Bir paketin eski versiyonları ile değiştirilebilir olmasını pin değerleri de gözönüne alınarak sağlamak için ("downgradable") öncelik değeri 1000'den büyük hale getirilmelidir.

Bir pin değeri paketin versiyonu, sürümü ve adına göre verilebilir.

Yukarıda gördüğümüz gibi versiyona pin değeri vermede versiyon numaraları ve özel karakterler kullanılır.

Sürüme pin değeri verme işlemi APT'nin kullandığı arşivlerdeki veya CD'deki Release dosyası ile ilişkilidir. Eğer kullandığınız arşivler Release dosyasını sağlamıyorsa bu özellik kullanılamaz. Release dosyanızın içeriğini /var/lib/apt/lists/ dizini altından görebilirsiniz. Sürüm için kullanılabilecek parametreler a (arşiv), c (components, bölüm), v (versiyon), o (origin, kaynak) ve l (label, etiket) tir.

Örnek:

     Package: *
     Pin: release v=2.2*,a=stable,c=main,o=Debian,l=Debian
     Pin-Priority: 1001

Bu örnekte Debian 2.2* versiyonlarını (2.2r2, 2.2r3 vb.), kararlı, stable arşivi main bölümü (contrib veya non-free de olabilirdi), kaynak ve etiket olarak Debian'ı seçtik. Kaynak (o=) Release dosyasını kimin ürettiğini belirtir, etiket (l=) ise dağıtımın ismidir (Debian dağıtımı için etiket Debian iken Progeny için Progeny'dir). Örnek bir Release dosyasının içeriği aşağıdadır:

     $ cat /var/lib/apt/lists/ftp.debian.org.br_debian_dists_potato_main_binary-i386_Release
     Archive: stable
     Version: 2.2r3
     Component: main
     Origin: Debian
     Label: Debian
     Architecture: i386

[ önceki ] [ İçindekiler ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ sonraki ]


APT NASIL

1.8.3 - Aralık 2002

Gustavo Noronha Silva kov@debian.org
Çeviri: Murat Demirten murat@debian.org