Her şeyden önce, yanlışlıkla bir PPA'dan paketleri yükselttiyseniz, şu cevaba bakın: /ubuntu//a/142808/103117 özellikle ppa-purge kullanma bölümüne. Zaten paketleri yükseltmiş olduğumdan ve apt-get, önceliklerden bağımsız olarak eski sürümüne geçmeyeceğinden, önce tüm yükseltilmiş paketleri temizlemek, ardından öncelikleri düzeltmek, daha sonra PPA'yı yeniden eklemek ve yalnızca istediğiniz paketleri yükseltmek en kolay yoldur.
Öncelikli / iğneleme sisteminin tam açıklaması için bkz man apt_preferences
.
Bir paket birden fazla kaynaktan kullanılabiliyorsa, her birine bir öncelik atanır ve bunu ile görebilirsiniz apt-cache policy <package name>
. Örneğin, nathan-renniewaldock / ppa / ubuntu adlı bir PPA kullanıyorum ve oradan mysql-server-5.5 (benim "paket Y") kurmak istemiyorum. Mevcut durumumu şu şekilde kontrol edebilirim:
rob@frodo:~$ apt-cache policy mysql-server-5.5
mysql-server-5.5:
Installed: 5.5.27-1~ppa1~precise
Candidate: 5.5.27-1~ppa1~precise
Version table:
*** 5.5.27-1~ppa1~precise 0
500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
Yani her şey öncelik 500 olduğundan, man sayfasına göre en yüksek sürüm numarasına sahip olan seçilir.
Örneğin, yalnızca ddclient ("paket X") yüklemek, ancak başka bir paket yüklemek istemiyorsanız, ddclient dışındaki PPA'daki tüm paketlerin önceliğini azaltmak istiyorsunuz. Adlı bir dosya oluşturun /etc/apt/preferences.d/nathan-preferences
. Bu dizindeki tüm dosyaların okunduğunu ve dosya adıyla ilgili bazı kurallar olduğunu unutmayın (yalnızca alfasayısal karakterler, hiperler, tire içermeli ve .pref ile bitmemelidir).
Öncelikle PPA'mızı nasıl tanımlayacağımızı bilmemiz gerekir. apt-cache policy
Tüm kaynakları hakkında kendi dispays bilgilere komut. PPA'mın adında "nathan" olduğunu biliyorum, bu yüzden yapıyorum:
$ apt-cache policy | grep nathan
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main
İlginç olan, /etc/apt/preferences.d/nathan-prefs dosyasında şu şekilde kullandığımız "o = LP-PPA-nathan-renniewaldock":
Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400
Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500
Bu, PPA'daki her şeyi öncelikli 400'e ayarlar, sonra ddclient'i varsayılan 500'e geri döndürür. Şimdi, çalışıp çalışmadığını kontrol edebilirim:
$ apt-cache policy ddclient
ddclient:
Installed: 3.8.0-11.4ubuntu1
Candidate: 3.8.1-0~ppa1~precise
Package pin: 3.8.1-0~ppa1~precise
Version table:
3.8.1-0~ppa1~precise 500
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 3.8.0-11.4ubuntu1 500
500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
100 /var/lib/dpkg/status
Yani ddclient, orijinal Ubuntu paketiyle aynı olan 500 önceliğine sahiptir, ancak daha yüksek bir sürüm olduğu için nathan PPA'dan yüklenecektir. Şimdi diğer paketlerin yüklenmeyeceğinden emin olalım:
$ apt-cache policy mysql-server
mysql-server:
Installed: 5.5.24-0ubuntu0.12.04.1
Candidate: 5.5.24-0ubuntu0.12.04.1
Version table:
5.5.27-1~ppa1~precise 0
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
100 /var/lib/dpkg/status
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
Bu durumda nathan PPA'nın paketi Ubuntu'dan daha düşük olan önceliğe 400 sahiptir, bu nedenle daha yüksek bir versiyona sahip olmasına rağmen yükseltilmeyecektir. Şunları kontrol edebiliriz:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
ddclient
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.7 kB of archives.
After this operation, 11.3 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Sadece istediğim paket yükseltilecek olduğundan, evet demekten mutluyum.