답변:
"고정"이라는 것을 사용합니다
PPA에서 패키지 foo를 설치한다고 가정하면 ppa의 종속성도 거의 설치해야합니다.
그러나 다른 프로그램이있는 경우 고정에 사용할 저장소를 지정할 수 있습니다.
우분투 위키 고정 참조
해당 페이지에 ppa를 고정하는 예가 있습니다.
https://help.ubuntu.com/community/PinningHowto#Pinning_the_ubuntu-mozilla-daily_PPA
PPT에서 Pin-Priority를 낮게 설정하면 원하지 않는 패키지 버전의 설치가 중단됩니다. 일단 설정되면 ubuntu-mozilla-daily PPA의 패키지는 더 높은 버전이 있더라도 다른 리포지토리의 패키지와의 경쟁에서 항상 손실됩니다.
파일 만들기 /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400
파일에 다음을 추가하십시오.
Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400
Pin-Priority가 업데이트되었는지 확인하려면 전후에 다음 명령을 사용하십시오.
apt-cache policy
apt-cache policy firefox-3.5
우선, 실수로 PPA에서 패키지를 이미 업그레이드 한 경우 다음 답변을 참조하십시오 : /ubuntu//a/142808/103117 특히 ppa-purge 사용에 관한 섹션. 패키지를 이미 업그레이드했지만 우선 순위에 관계없이 apt-get이 다운 그레이드되지 않으므로 업그레이드 된 모든 패키지를 먼저 제거한 다음 우선 순위를 수정 한 다음 PPA를 다시 추가하고 원하는 패키지 만 업그레이드하는 것이 가장 쉬운 방법입니다.
우선 순위 / 피닝 시스템에 대한 자세한 설명은을 참조하십시오 man apt_preferences
.
여러 소스에서 패키지를 사용할 수있는 경우 각 패키지에 우선 순위가 지정되며로 확인할 수 있습니다 apt-cache policy <package name>
. 예를 들어, nathan-renniewaldock / ppa / ubuntu라는 PPA를 사용하고 거기에서 mysql-server-5.5 ( ""패키지 Y ")를 설치하고 싶지 않습니다. 그래서 현재 상황을 확인할 수 있습니다 :
rob@frodo:~$ apt-cache policy mysql-server-5.5
mysql-server-5.5:
Installed: 5.5.27-1~ppa1~precise
Candidate: 5.5.27-1~ppa1~precise
Version table:
*** 5.5.27-1~ppa1~precise 0
500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
맨 페이지에 따르면 모든 것이 우선 순위 500이므로 버전 번호가 가장 높은 것이 선택됩니다.
예를 들어 ddclient ( "package X") 만 설치하고 다른 패키지는 설치하지 않으려는 경우 ddclient를 제외한 PPA의 모든 패키지에 대한 우선 순위를 줄이려고합니다. 라는 파일을 만듭니다 /etc/apt/preferences.d/nathan-preferences
. 해당 디렉토리의 모든 파일을 읽고 파일 이름에 대한 규칙이 있습니다 (영숫자, 하이픈, 대시 만 포함하고 확장자가 없거나 .pref로 끝나야 함).
먼저 PPA를 식별하는 방법을 알아야합니다. apt-cache policy
모든 소스에 대한 자신의 dispays에 정보에 대한 명령. 본인의 PPA 이름에 "nathan"이 있다는 것을 알고 있습니다.
$ apt-cache policy | grep nathan
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main
흥미로운 부분은 "o = LP-PPA-nathan-renniewaldock"이며 /etc/apt/preferences.d/nathan-prefs 파일에서 다음과 같이 사용합니다.
Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400
Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500
PPA의 모든 것을 우선 순위 400으로 설정 한 다음 ddclient를 기본값 500으로 다시 설정합니다. 이제 작동하는지 확인할 수 있습니다.
$ apt-cache policy ddclient
ddclient:
Installed: 3.8.0-11.4ubuntu1
Candidate: 3.8.1-0~ppa1~precise
Package pin: 3.8.1-0~ppa1~precise
Version table:
3.8.1-0~ppa1~precise 500
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 3.8.0-11.4ubuntu1 500
500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
100 /var/lib/dpkg/status
따라서 ddclient의 우선 순위는 500이며 이는 원래 Ubuntu 패키지와 동일하지만 더 높은 버전이므로 nathan PPA에서 설치됩니다. 이제 다른 패키지가 설치되지 않도록하십시오 :
$ apt-cache policy mysql-server
mysql-server:
Installed: 5.5.24-0ubuntu0.12.04.1
Candidate: 5.5.24-0ubuntu0.12.04.1
Version table:
5.5.27-1~ppa1~precise 0
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
*** 5.5.24-0ubuntu0.12.04.1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
100 /var/lib/dpkg/status
5.5.22-0ubuntu1 0
500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages
이 경우, nathan PPA의 패키지는 우분투 패키지보다 우선 순위가 400 인 우선 순위가 있으므로 더 높은 버전이지만 업그레이드되지 않습니다. 우리는 확인할 수 있습니다 :
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
ddclient
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.7 kB of archives.
After this operation, 11.3 kB of additional disk space will be used.
Do you want to continue [Y/n]?
원하는 패키지 만 업그레이드하기 때문에 그렇습니다.