데비안 테스트에서 단일 패키지를 설치하거나 안정적으로 불안정한 방법은 무엇입니까?


41

"모든 것 및 부엌 싱크대"를 Jessie 버전으로 업그레이드하지 않고 데비안 Jessie에서 단일 패키지 (및 그 종속 항목을 Wheezy에서 만족할 수없는 정도까지)를 Wheezy 시스템에 설치하려고합니다. 특히, Jessie에서는 패키지로 제공되지만 Wheezy에서는 패키지로 제공되지 않는 kpcli 를 설치하고 싶습니다 .

내가 찾은 모든 것은 Jessie 저장소를 소스 목록에 추가하고 모든 것을 wheezy로 유지하고 jessie에서 단일 패키지 만 가져 오도록 고정 설정해야한다는 것을 나타냅니다. 그러나 그것은 나를 위해 제자리에 떨어지지 않습니다. 다음 내용으로 /etc/apt.d/sources.list.d/jessie.list를 만드는 경우 :

deb ftp://ftp.debian.org/debian/ jessie main
deb-src ftp://ftp.debian.org/debian/ jessie main

다음을 사용하여 /etc/apt/preferences.d/jessie를 만듭니다.

Package: *
Pin: release a=wheezy
Pin-Priority: 1001

Package: kpcli
Pin: release a=jessie
Pin-Priority: 450

실행 apt-get -u update다음에 apt-get -u install kpcli/jessie, 나는 기대 apt-get을 kpcli에서 풀과에 어쩌면 제시에서 다른 패키지의 작은 소수, 그리고 그대로 내 설치된 시스템의 나머지 부분을 둡니다. (시스템은 Wheezy를 완전히 최신으로 설치 한 것입니다.) 또는 핀 우선 순위가 너무 낮 으면 아무 것도 수행하지 않을 것으로 예상됩니다. 오히려 내 시스템에서 apt-get은 수백 개의 패키지를 업그레이드하려고합니다.

뭐, 정확히, 그대로 내 위지 시스템의 나머지 부분을 떠나는 동안 제시 버전 단지이 하나 개의 패키지를 설치하는 데 필요한?

이 특별한 경우에, 소프트웨어는 실제로 Perl로 작성되므로 바이너리 나 이와 관련된 것들에 대한 컴파일은 없습니다. 그러나 소수의 Perl 모듈 종속성이 있습니다. 따라서 가능한 대안 중 하나는 (1) 다음과 같이 설치 될 단일 로컬 .deb 아카이브를 지정할 수 dpkg -i있고 (2) 지능적인 방식으로 종속성을 처리 하는 것만 사용하여 .deb (수동으로 다운로드)를 설치 하는 것입니다. , 어떤 평범 dpkg -i하지 않습니다. 그러나 모든 검색에서 여러 번 수행했으며이를 수행하는 방법에 대한 간단한 가이드를 제시하지 못하면 일반적인 솔루션 (이진, 컴파일 된 패키지에서도 작동하는 솔루션)이 좋습니다. .


4
이것을 처리하는 일반적인 방법은 백 포트를 통해 Wheezy의 데비안 소스에서 패키지를 다시 빌드하는 것입니다. 사용중인 패키지는 perl (또는 적어도 그것에 의존) 인 것처럼 보이므로 백 포트하기가 어렵지 않을 것입니다. 더 자세한 내용을 원한다면 그렇게 말하십시오. 실제로 필요한 경우 연습을 제공 할 수 있습니다.
Faheem Mitha

답변:


15

각 항목 (안정, 테스트, 불안정)에 대해 핀 우선 순위가 500입니다. 핀> 1000을 사용해서는 안됩니다. 나는 무언가를 다운 그레이드하려고 할 때만 1001을 사용합니다. /etc/apt/sources.list다음 /etc/apt/preferences파일 에 testing + sid + experimental 항목이 지정되어 있습니다.

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900

Package: *
Pin: release o=Debian,a=experimental
Pin-Priority: 130

불안정한 값은 기본값 500입니다. 따라서 족제비를 확인하십시오.

# apt-cache policy iceweasel
iceweasel:
  Installed: (none)
  Candidate: 17.0.10esr-1~deb7u1
  Version table:
     26.0-1 0
        130 http://ftp.pl.debian.org/debian/ experimental/main amd64 Packages
     24.2.0esr-1 0
        500 http://ftp.pl.debian.org/debian/ sid/main amd64 Packages
     17.0.10esr-1~deb7u1 0
        900 http://ftp.pl.debian.org/debian/ testing/main amd64 Packages

따라서 iceweasel을 설치하려고하면 우선 순위가 가장 높기 때문에 테스트 지점에서 다운로드됩니다.

우선 순위를 다음과 같이 변경하십시오.

Package: *
Pin: release a=wheezy
Pin-Priority: 900

Package: kpcli
Pin: release a=jessie
Pin-Priority: 910

sudo apt-get -u install kpcli/jessie여전히 316 upgraded, 137 newly installed, 251 to remove and 1688 not upgraded.제안 된 우선 순위를 알려줍니다 . 내가 할 경우 apt-cache policy perl(업그레이드하려는 패키지 중 하나) 우선 순위 500의 후보로 5.18.1-5를 표시하고 우선 순위 500에 5.14.2-21 + deb7u1을 설치했습니다. apt가 우선 순위를
정하지

좋아, 뭔가 찾았 어 트릭이 Package: kpcli*(대신 Package: kpcli) 를 사용 Package: * Pin: release o=Debian Pin-Priority: -10하고 마지막 에을 사용한 것처럼 보입니다 . 물론 Jessie에서만 사용할 수있는 Perl 버전으로 이어지는 어려운 종속성이 있으며, 새로운 libc6이 필요합니다! 솔직히 그 길을 가지 않을 것이지만 이것은 적어도 나에게 결과를 얻었습니다. 감사합니다!
CVn

25

실제로 고정 / 우선 순위를 전혀 사용하지 않고 할 수있는 방법이 있습니다. 대신 패키지를 설치할 기본 릴리스를 지정할 수 있으며, 대상 릴리스 매개 변수를 사용하여 달리 지정하지 않는 한 사용됩니다. 백 포트 등에서 선택한 패키지 만 설치하려는 경우에도 동일한 방식으로 작동합니다.

스트레치에서 Jessie로 패키지를 설치하는 경우 이것을 보여줄 것입니다. 현재 안정적인 / 테스트이기 때문에 원래 요청했던 것처럼 Wheezy에서 Jessie 패키지를 설치하는 것과 같은 방식으로 작동합니다.

먼저 다음과 같이 저장소로 스트레치를 추가하십시오 /etc/apt/sources.list.d/stretch.list.

deb http://ftp.debian.org/debian stretch main

그런 다음 기본 릴리스를 설정하려면 다음을 /etc/apt/apt.conf.d/default-release포함 하는 파일을 작성하십시오 .

APT::Default-Release "jessie";

Wheezy에서는 apt.conf.d존재하지 않으며 해당 스 니펫을에 넣어야한다고 생각합니다 /etc/apt/apt.conf.

그런 다음 테스트에서 패키지를 설치하는 것은 aptitude -t stretch install kpcli우선 순위를 고정하지 않아도됩니다.

참고 : 당신이 사용하는 경우 그 의견에 지적 @amc apt대신에 aptitude, 당신이 사용해야 할 "stable"뿐만 Default-Release아니라 "jessie". 감사합니다! (물론 aptitude해당 설정과 함께 사용할 수도 있습니다 .)


…이 작업을 수행하는 정말 매끄러운 방법처럼 보입니다. 왜 이것이 공식적으로 허용되지 않습니까?
JamesTheAwesomeDude

1
나는 얻는다The value 'stretch' is invalid for APT::Default-Release as such a release is not available in the sources
Steven Penny

1
apt
amc를

6

Pin: release a=wheezy이어야 할 Pin: release n=wheezy것입니다.

로부터 man 페이지 :

다음 레코드는 코드 이름이 "jessie"인 모든 배포에 속하는 모든 패키지 버전에 우선 순위가 높습니다.

           Package: *
           Pin: release n=jessie
           Pin-Priority: 900

그래서 맞습니다!


3
jessy에서 모든 패키지를 설치하지 않습니까?
rubo77
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.