Paketlerin yönetimi

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ı.

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.

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.

# apt-get install xchat

APT hemen kendi veritabanını tarayarak bu paketin en son sürümünü 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    Bu yardım iletisini gösterir.
-d    Sadece indirir, kurulum yapılmaz
-f    Bütünlük kontrolü başarısız olsa da devam etmeye çalışır
-s    Hiçbir eylem yapmaz, sadece olayı simüle eder
-y    Tüm sorulara Evet cevabı verildiği varsayılır
-u    İşlem sonucunda güncellenecek olan paketleri listeler

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 isminin 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 bölümüne 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]

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 yapılandırma dosyaları -eğer varsa- sistemde kalacaktır. Yapılandırma 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 yapılandırma 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.

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 kullandığınız dağıtımdaki programların güncel sürümlerine sisteminizi 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 ile yapılmasıdır; ayrıntılar için Yeni bir sürüme güncelleme kısmına bakınız.

Bu komutun -u seçeneği ile çalıştırılması oldukça yararlıdır. Bu seçeneklerin kullanımıyla APT güncellenecek paketleri listeler. APT paketlerin en son sürümlerini 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ı paketlerin sistemde tutulmaya devam edileceğini (kept back) söylemektedir. Bunun anlamı, listelenen programların yeni sürümleri 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 sürümlerinin kurulmasını gerektirmekte, bu işlem yapılamayacağı için de paketler güncellenmemektedir. İkinci olasılık, paketin yeni sürümünün 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.

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 (bu CD, satın alınmış veya Internet üzerinden indirilmiş bir ISO görütüsünden elde edilmiş olabilir) yükseltebilirsiniz.

Ayrıca kurulu paketler arasındaki paket bağımlılıklarında değişmeler olduğunda kullanılır. apt-get upgrade ile yapılan güncellemelerde bu tür paketlere dokunulmaz.

Örnek olarak, kararlı Debian dağıtımının 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) 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 sürümünü arar. Eğer /etc/apt/sources.list dosyanızda belirtilen arşivlerde bir paketin CD üzerindekinden daha yeni bir sürümü var ise güncelleme sırasında bu sürüm kullanılacaktır.

Paket güncelleme bölümündeki ö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 yeni oluşan bir çakışmaya sahiptir. 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 ayrıntılı 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.

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 konaklardan 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.

Zamanla dosyaların tutulduğu yerel dizinin boyutları artmaya ve gereksiz yer kaplamaya başlar. APT bu dizini temizlemek için komutlar içerir: apt-get'in clean ve autoclean komutları.

apt-get clean kilit dosyaları haricinde /var/cache/apt/archives/ ve /var/cache/apt/archives/partial/ dizinlerideki tüm dosyları siler. Sonuç olarak, eğer bir paketi yeniden kurmak isterseniz (--reinstall seçeneği ile) 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 sürüm 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 sürümü 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.

APT ile dselect kullanımı

dselect kurulum için Debian paketlerini seçebileceğiniz bir programdır. Kullanımı oldukça karışık ve sıkıcıdır, fakat biraz pratikle konsol tabanlı ncurses kütüphanesi üzerinde çalışan arayüzüne alışılabilir.

dselect'in özelliklerinden biri, Debian paketlerinin "şiddetle önerilen" ve "tavsiye edilen" paketlere ait bilgileri işleyebilmesidir ("recommending" ve "suggesting"). Programı çalıştırmak için root iken dselect'i çalıştırın. 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 belgelerinin bulunduğu http://www.debian.org/doc/ adresini ziyaret edebilirsiniz.

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

# apt-get -u dselect-upgrade

# 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.

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

Kullanıcılar bazen bir Debian sürümünü temel sistem olarak kullanırken bir veya birkaç paketini diğer sürümlerden kullanmak isterler.

Ana Debian sürümünü belirtmek için aşağıdaki satırı /etc/apt/apt.conf (eğer yoksa oluşturun) dosyanıza ekleyin:

APT::Default-Release "sürüm";

Buradaki sürüm kısmı ana sürüm olarak kullanmak istediğiniz sürüm adıdır. Kullanabileceğinz sürümler stable, testing ve unstable'dır. Diğer bir sürümden paket yüklemek için APT'yi şu şekilde kullanın:

# apt-get -t sürüm install paket_adı

Bu şekilde çalıştırabilmek için /etc/apt/sources.list dosyasında paketi istediğiniz sürümle ilgili en az bir APT kaynak girdisi olmalı ve paket kaynaktan indirilebilir olmalıdır

Paketin belli bir sürümünü kullanmak isterseyebilirsiniz:

# apt-get install paket_adı=sürüm

Örneğin aşağıdaki örnekte nautilus paketinin 2.2.4-1 sürümü kurulmaktadır:

# apt-get install nautilus=2.2.4-1

Uyarı

Debian `unstable' (kararsız) sürümü Debian paketlerinin en yeni sürümlerinin konulduğu sürümdür. Bu sürümde paketlerle ilgili birkaç paketi veya tüm sistemi etkileyebilecek en küçüğünden en tehlikeli değişikliklere kadar değişmeler olur. Bu yüzden de dağıtımın bu sürümü tecrübesiz veya sistemde kararlılık bekleyen kullanıcılar tarafından kullanılmamalıdır.

`testing' (deneme) sürümü de `unstable' sürümünden daha iyi sayılmaz, çünkü güvenlik güncellemelerini zamanında kabul etmemektedir. Sunucular ve diğer üretim sistemleri için kararlı sürüm kullanılmalıdır.

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 | cut -d ' ' -f 1`

Belirli bir sürüme sahip paketlerin kurulu olarak kalmasını sağlama

ileri düzey

Bazen bir paketteki bazı kısımları değiştirmeniz gerekibilir ve bunun için de zamanınızolmayabilir veya bu değişikleri programın yeni sürümüne yansıtmnak istemiyorolabilirsiniz. Örneğin sisteminizi Debian 3.0 dağıtımına güncellemiş fakat belirli bir paketin Debian 2.2 dağıtımındaki halini kullanmaya devam etmek isteyebilirsiniz. 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 biçemi şu şekildedir:

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

Örnek olarak, sylpheed paketinin 0.4.99 sürümünü korumak isterseniz aşağıdaki kaydı 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 sürümler için geçerli olduğunu belirtebiliyoruz. Bu sayede program sürümünün yanı sıra paketin Debian sürümünün değişmesi durumunda da koyduğunuz kurallar geçerli olur, örneğin 0.4.99-1 sürümü ile 0.4.99-10 sürümü.

Pin önceliği "Packages:" ve "Pin:" satırlarına karşılık gelen paketlerin yüklenip yüklenmeyeceğine karar verilmede kullanılır. Yüksek öncelik değeri paketin yüklenmesini sağlar. apt_preferences(7) kılavuzunu detaylar için okuyabilirsiniz. Bir kaç örnek değeri yukarıdaki örnek için açıklayalım:

1001

Sylpheed 0.4.99 sürümü apt kullanımı ile başka sürümlerle değiştirilemeyecektir. Daha yüksek sürümleri edinilebilri olsa da apt kullanımında sadece 0.4.99 sürümü kurulacaktır. Bir paketin eski sürümleri 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.

1000

Etkisi 1001 önceliği ile aynıdır. Farkı ise 0.4.99 sürümünden daha düşük bir sürüme indirmeye (downgrade) izin verilmeyecek olmasıdır.

990

0.4.99 sürümü sadece "APT::Default-Release" değişkeninde belirtilen tercih edilen sürümde daha yeni bir sürümde paket olması durumunda var olanla değiştirilecektir. bknz. Karışık bir sistem nasıl kurulur?

500

Herhangi bir sürümdeki sylpheed 0.4.99 sürümünden daha büyük sürüm numarasına sahip olan paket tercih edilen paket olacaktır. Düşük sürüm numaraları içinse 0.4.99 geçerliliğini koruyacaktır

100

Herhangi bir sürümdeki sylpheed 0.4.99 sürümünden daha büyük sürüm numarasına sahip olan paket tercih edilen paket olacaktır. 0.4.99 sürümü eğer başka herhangi bir sürümü kurulmadıysa yüklenecektir. Bu öncelik değeri yüklü paketler için kullanılır.

-1

Negatif öncelik değerleri de kullanılabilir. Bu kullanım ile 0.4.99 sürümünün yüklenmesi tamamen önlenmiş olur.

Bir pin değeri paketin "Debian dağıtımı"na, "sürümü"ne ve "adı"na göre verilebilir.

Yukarıda gördüğümüz gibi pin değeri vermede sürüm 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 seçenekler a (arşiv), c (components - bölüm), v (version - sürüm), o (origin - kaynak) ve l (label - etiket) tir.

Bir örnek:

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

Bu örnekte Debian 2.2* dağıtımlarını (2.2r2, 2.2r3 vb. - bu seçim ile güvenlik yamaları ve önemli güncellemeler dahil edilmiş oldu), 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