Encontrou uma maneira de fazê-lo.
O truque é usar duas cláusulas de fixação. O primeiro a proibir TODOS os pacotes do PPA e o segundo a selecionar os que você deseja.
Portanto, para o exemplo acima, primeiro adiciono o ppa como de costume:
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
Agora, se eu executar a política do apt-cache, ele me mostrará que há uma versão mais recente do navegador cromo disponível e que será instalada com uma atualização porque está na mesma prioridade (500) do meu navegador cromo atual.
$ 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)
$
Isso é ótimo no que diz respeito a esse pacote, mas eu não quero que os outros neste ppa (que também têm prioridade 500) sejam instalados. No momento, se eu tentar atualizar, receberei mais do que apenas os pacotes chromium que eu quero desse repositório:
$ 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]?
Então, o que posso fazer é dizer ao apt que quero que todos os pacotes nesse ppa, webapps-preview neste caso, tenham uma prioridade mais baixa, exceto aqueles com "chromium" em seu nome. O mecanismo para isso é fixar um pacote
Eu crio um arquivo no /etc/apt/preferences.d/ com duas cláusulas. O primeiro diz que concede a todos os pacotes no webapps-preview ppa uma prioridade mais baixa que a normal (para que eles não sejam preferidos, mesmo que possuam um número de versão mais alto. A segunda cláusula substitui parcialmente o primeiro dizendo: dê os pacotes em que ppa com "chromium" em seu nome tenha a mesma prioridade que outros pacotes para que seja instalado (por ter um número de versão mais alto).
$ 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
Para identificar a string correta para a opção "Pin: release", podemos usar a política apt-cache novamente.
$ 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
...
Para versões apt <0.8.14, pacotes fixados devem ser especificados explicitamente, pois os curingas não funcionam:
$ 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 agora, quando tento atualizar, recebo apenas os pacotes que quero desse ppa e não os outros. Tudo bem escolhido cereja para mim:
$ 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]?