Menemukan satu cara untuk melakukannya.
Caranya adalah menggunakan dua klausa menjepit. Yang pertama untuk melarang SEMUA paket dari PPA dan yang kedua untuk memilih yang Anda inginkan.
Jadi untuk contoh di atas, saya pertama-tama menambahkan ppa seperti biasa:
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
Sekarang jika saya menjalankan kebijakan apt-cache, itu akan menunjukkan kepada saya bahwa ada versi yang lebih baru dari browser kromium yang tersedia dan akan diinstal dengan pemutakhiran karena berada dalam prioritas yang sama (500) dengan browser kromium saya saat ini.
$ sudo apt-cache policy chromium-browser
chromium-browser:
Installed: 18.0.1025.168~r134367-0ubuntu0.12.04.1
Candidate: 20.0.1132.47~r144678-0precise1+webapps3
Version table:
20.0.1132.47~r144678-0precise1+webapps3 0
500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main amd64 Packages
*** 18.0.1025.168~r134367-0ubuntu0.12.04.1 0
500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
500 http://ppa.launchpad.net/chromium-daily/beta/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
18.0.1025.151~r130497-0ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
E: Unable to parse package file /etc/apt/preferences.d/webapps-preview-pin-400 (1)
$
Itu bagus sejauh paket itu tetapi saya tidak ingin yang lain di ppa ini (yang juga memiliki prioritas 500) untuk menginstal. Saat ini jika saya mencoba untuk memutakhirkan, saya akan mendapatkan lebih dari sekadar paket kromium yang saya inginkan dari repositori itu:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
bamfdaemon gwibber gwibber-service gwibber-service-facebook gwibber-service-twitter indicator-appmenu libbamf0 libbamf3-0 shotwell
The following packages will be upgraded:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg gwibber-service-identica indicator-messages indicator-status-provider-mc5
indicator-status-provider-pidgin libindicator-messages-status-provider1
8 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Need to get 25.3 MB of archives.
After this operation, 5,034 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Jadi yang bisa saya lakukan adalah mengatakan bahwa saya ingin semua paket dalam ppa itu, pratinjau webapps dalam hal ini, memiliki prioritas yang lebih rendah kecuali yang memiliki "chromium" dalam namanya. Mekanisme untuk ini adalah menyematkan paket
Saya membuat file di /etc/apt/preferences.d/ dengan dua klausa. Yang pertama mengatakan memberikan semua paket di papp-preview webapps prioritas yang lebih rendah daripada yang biasa (sehingga mereka tidak disukai bahkan jika mereka memiliki nomor versi yang lebih tinggi. Klausa kedua sebagian menimpa yang pertama dengan mengatakan memberi paket di bahwa ppa dengan "chromium" dalam nama mereka prioritas yang sama dengan paket lain sehingga itu akan diinstal (dengan itu memiliki nomor versi yang lebih tinggi).
$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package: *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400
Package: *chromium*
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500
Untuk mengidentifikasi string yang benar untuk opsi "Pin: release" kita dapat menggunakan kebijakan apt-cache lagi.
$ apt-cache policy
...
500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-webapps-preview,a=precise,n=precise,l=preview,c=main
origin ppa.launchpad.net
...
Untuk versi apt <0.8.14 paket yang disematkan harus ditentukan secara eksplisit karena wildcard tidak berfungsi:
$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package: *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400
Package: chromium-browser chromium-codecs-ffmpeg chromium-browser-l10n chromium-codecs-ffmpeg-extra
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500
Dan sekarang, ketika saya mencoba untuk meng-upgrade saya hanya mendapatkan paket yang saya inginkan dari ppa itu dan bukan yang lain. Semua cherry memilih dengan baik untuk saya:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.1 MB of archives.
After this operation, 5,026 kB of additional disk space will be used.
Do you want to continue [Y/n]?