Ho trovato un modo per farlo.
Il trucco sta usando due clausole di pinning. Il primo a non consentire TUTTI i pacchetti dal PPA e il secondo a selezionare quelli desiderati.
Quindi, per l'esempio sopra, aggiungo prima il ppa come al solito:
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
Ora, se eseguo la politica di apt-cache, mi mostrerà che è disponibile una versione più recente del browser chromium e che verrà installata con un aggiornamento perché ha la stessa priorità (500) del mio browser chromium corrente.
$ 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)
$
È fantastico per quanto riguarda quel pacchetto, ma non voglio installare gli altri in questo ppa (che ha anche una priorità 500). In questo momento, se provo ad aggiornare, otterrò molto di più dei soli pacchetti di cromo che voglio da quel repository:
$ 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]?
Quindi quello che posso fare è dire a apt che voglio che tutti i pacchetti in quella ppa, in questo caso webapps-preview, abbiano una priorità più bassa tranne quelli con "chromium" nel loro nome. Il meccanismo per questo sta bloccando un pacchetto
Creo un file in /etc/apt/preferences.d/ con due clausole. Il primo dice dare tutti i pacchetti nelle webapps-anteprima ppa una priorità inferiore a quello normale (in modo che siano non preferito, anche se hanno un numero di versione più alto. La seconda clausola sostituisce in parte la prima dicendo danno i pacchetti in che ppa con "chromium" nel loro nome ha la stessa priorità degli altri pacchetti in modo che venga installato (con un numero di versione superiore).
$ 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
Per identificare la stringa corretta per l'opzione "Pin: release" possiamo usare di nuovo la politica di apt-cache.
$ 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
...
Per le versioni apt <0.8.14 i pacchetti aggiunti devono essere specificati esplicitamente poiché i caratteri jolly non funzionano:
$ 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
E ora, quando provo ad aggiornare ottengo solo i pacchetti che desidero da quel ppa e non dagli altri. Tutte le ciliegie ben raccolte per me:
$ 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]?