고정 및 로컬 저장소

고정 및 로컬 저장소

데비안의 수정된 문제를 잘 이해할 수 없습니다. 필요에 따라 종속성을 충족하기 위해 먼저 로컬 프로젝트 저장소에서 패키지를 자동으로 설치한 다음 로컬 안정 저장소, 공식 Debian 저장소에서 동일한 순서로 설치하려고 했습니다.

따라서 /etc/apt/sources.list에는 세 개의 저장소가 있습니다.

deb http://our-stable-repo/ our-squeeze-stable main
deb http://official-debian-repo/ squeeze main
deb http://our-project-repo/ our-project main

릴리스 파일은 our-stable-repo와 같습니다.

Origin: Ourname
Label: Ourname
Suite: our-squeeze-stable
Components: backports main
Architectures:  
MD5Sum:
 [...]
SHA1:
 [...]

그리고 프로젝트 저장소:

Origin: Ourname
Label: Ourname
Archive: our-project
Component: main
Architecture: amd64

모든 패키지는 our-stable-repo와 our-project-repo에 있습니다. 동일한 종속성이 거의 없는 our-project-repo 패키지와 our-stable-repo(테스트할 필요가 없는 패키지)의 일부 종속성이 있는 패키지를 테스트하고 싶습니다.

이제 /etc/apt/preferences를 설정했습니다.

Package: *
Pin: release a=our-project
Pin-Priority: 900

Package: *
Pin: release a=our-squeeze-stable
Pin-Priority: 750

Package: *
Pin: release a=squeeze
Pin-Priority: 600

그래서 나는 설치를 시도하고 싶습니다어느우리 프로젝트의 첫 번째 패키지.

하지만 그런 일은 일어나지 않았습니다. 우리의 스퀴즈 마구간은 항상 "승리"하는 것 같습니다. -t our-project명령줄에 제공해 도 도움이 되지 않습니다. 프로젝트 저장소에서 패키지를 설치할 수 있는 유일한 방법은 다음과 같습니다.제거하다다른 소스를 사용하면 종속성을 잃게 됩니다.

: 으로 디버깅을 시도했지만 apt-cache policy이것이 더 혼란스럽습니다.

root@test:~# apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http://our-project-repo/ our-project/main amd64 Packages
     origin our-project-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/non-free amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=non-free
     origin official-debian-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/contrib amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=contrib
     origin official-debian-repo
 500 http://official-debian-repo/debian-security/ squeeze/updates/main amd64 Packages
     release v=6.0,o=Debian,a=oldstable,n=squeeze,l=Debian-Security,c=main
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/non-free amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=non-free
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/contrib amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=contrib
     origin official-debian-repo
 500 http://official-debian-repo/debian/ squeeze/main amd64 Packages
     release v=6.0.7,o=Debian,a=oldstable,n=squeeze,l=Debian,c=main
     origin official-debian-repo
 750 http://our-stable-repo/ our-squeeze-stable/main amd64 Packages
     release o=Ourname,a=our-squeeze-stable,l=Ourname,c=main
     origin our-stable-repo
Pinned packages:
root@test:~# 

이 apt-cache 정책 출력에 여전히 500개의 프로젝트 저장소가 있는 이유는 무엇입니까?

이 설정에 문제가 있나요?

답변1

 500 http://our-project-repo/ our-project/main amd64 Packages
     origin our-project-repo

누락된 릴리스 와이어를 확인하십시오. 게시물 필드에 핀을 설정하려고 하기 때문에 이는 중요합니다. 아카이브에 올바른 게시 파일이 없거나 최소한 필드가 설정되지 않았을 가능성이 높습니다.

패키지 아카이브를 유지하는 데 무엇을 사용하는지 잘 모르겠지만 (예를 들어) mini-dinstall을 사용하면 release_*구성 옵션을 설정해야 합니다. /var/lib/apt/lists를 확인하여 apt-get의 아카이브 파일(있는 경우)의 현재 버전을 찾을 수 있습니다. 자세히 살펴보면 apt-get update릴리스 파일 및 관련 콘텐츠(예: 릴리스 파일의 서명인 Release.gpg)를 다운로드하는(또는 다운로드에 실패하는) 것을 볼 수 있습니다.

릴리스 파일을 수정할 수 없는 경우 소스에 핀을 설정하세요.

Package: *
Pin: origin "our-project-repo"
Pin-Priority: 900

관련 정보