PPA에서 특정 패키지 업데이트 만 허용 할 수 있습니까?


19

원하는 X 패키지가있는 PPA를 추가했지만 업데이트를 사용하거나 수신하지 않으려는 Y 패키지가있는 PPA를 추가했다고 가정하겠습니다. 동일한 PPA에서 특정 패키지에 대한 업데이트를 수신하지만 다른 패키지에 대해 동일한 PPA에서 업데이트를 거부하는 방법은 무엇입니까?

이것이 내가 원하는 특정 패키지를 가지고 있지만 아직 업데이트하고 싶지 않은 다른 PPA를 추가하는 여러 PPA에서 나에게 발생했기 때문에 단계별 예제가 좋을 것입니다.

답변:


16

"고정"이라는 것을 사용합니다

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

7

우선, 실수로 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]?

원하는 패키지 만 업그레이드하기 때문에 그렇습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.