Znalazłem jeden sposób, aby to zrobić.
Sztuczka polega na użyciu dwóch klauzul przypinających. Pierwszy nie zezwala na WSZYSTKIE pakiety z PPA, a drugi wybiera te, które chcesz.
W powyższym przykładzie najpierw dodaję ppa jak zwykle:
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
Teraz, jeśli uruchomię politykę apt-cache, pokaże mi, że dostępna jest nowsza wersja przeglądarki chromu i że zainstaluje się z aktualizacją, ponieważ ma ten sam priorytet (500), co moja obecna przeglądarka chromu.
$ 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)
$
To świetnie, o ile ten pakiet, ale nie chcę instalować innych w tym ppa (które mają również priorytet 500). W tej chwili, jeśli spróbuję zaktualizować, otrzymam więcej niż tylko pakiety chromu, które chcę z tego repozytorium:
$ 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]?
Mogę więc powiedzieć aptowi, że chcę, aby wszystkie pakiety w tym ppa, w tym przypadku podgląd aplikacji internetowych, miały niższy priorytet, z wyjątkiem tych z „chromem” w nazwie. Mechanizmem tego jest przypinanie paczki
Plik tworzę w /etc/apt/preferences.d/ z dwoma klauzulami. Pierwszy mówi, że nadaj wszystkim pakietom ppa podglądu webapps niższy priorytet niż zwykły (tak, że nie są one preferowane, nawet jeśli mają wyższy numer wersji. Druga klauzula częściowo zastępuje pierwszy, mówiąc, że daj pakiety w ten ppa z „chromem” w nazwie ma ten sam priorytet co inne pakiety, aby został zainstalowany (dzięki temu, że ma wyższy numer wersji).
$ 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
Aby zidentyfikować poprawny ciąg dla opcji „Pin: release”, możemy ponownie użyć polityki 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
...
W przypadku wersji apt <0.8.14 należy wyraźnie określić przypięte pakiety, ponieważ symbole wieloznaczne nie działają:
$ 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
A teraz, kiedy próbuję zaktualizować, otrzymuję tylko te pakiety, których chcę od tego ppa, a nie innych. Wszystko ładnie wybrane dla mnie:
$ 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]?