한 가지 방법을 찾았습니다.
트릭은 두 개의 고정 구절을 사용하고 있습니다. 첫 번째는 PPA에서 모든 패키지를 허용하지 않고 두 번째는 원하는 패키지를 선택하는 것입니다.
따라서 위의 예에서는 평소처럼 ppa를 먼저 추가합니다.
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
이제 apt-cache 정책을 실행하면 최신 버전의 크롬 브라우저가 있으며 현재 크롬 브라우저와 동일한 우선 순위 (500)이기 때문에 업그레이드와 함께 설치됩니다.
$ 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)
$
그 패키지까지는 훌륭하지만이 ppa (500 우선 순위)의 다른 패키지를 설치하고 싶지 않습니다. 지금 업그레이드를 시도하면 해당 저장소에서 원하는 크롬 패키지 이상의 것을 얻을 수 있습니다.
$ 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]?
그래서 내가 할 수있는 일은 apt 에게이 경우 ppa, webapps-preview의 모든 패키지가 이름에 "chromium" 이있는 패키지를 제외하고 우선 순위 가 더 낮아지기 를 원한다는 것입니다. 이를위한 메커니즘 은 패키지를 고정하는 것입니다
/etc/apt/preferences.d/에 두 개의 절로 파일을 만듭니다. 첫 번째는 webapps-preview ppa의 모든 패키지를 일반 패키지보다 우선 순위가 낮게 지정한다고 말합니다 (따라서 버전 번호가 더 높더라도 선호 하지 않습니다 . 두 번째 절은 이름에 "크롬"이 포함 된 ppa는 다른 패키지와 동일한 우선 순위를 갖기 때문에 더 높은 버전 번호로 설치됩니다.
$ 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
"Pin : release"옵션에 대한 올바른 문자열을 식별하기 위해 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
...
apt 버전 <0.8.14의 경우 와일드 카드가 작동하지 않으므로 고정 된 패키지를 명시 적으로 지정해야합니다.
$ 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
그리고 지금 업그레이드하려고 할 때 다른 패키지가 아닌 해당 패키지에서 원하는 패키지 만 얻습니다. 멋지게 체리가 나를 위해 고른 것 :
$ 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]?