두 개의 패키지 A와 B가 있습니다. 여기서 B는 패키지 A와 정확한 버전에 따라 달라지는 선택적 구성 요소입니다. 따라서 두 개의 패키지가 설치되어 있는 경우 동일한 버전인지 확인해야 합니다. 상황을 좀 더 복잡하게 만들기 위해 preinst
스크립트에서 패키지 A 설치가 실패할 수 있습니다. 이 경우 아무것도 업그레이드하면 안 됩니다.
따라서 A와 B가 설치된 경우 원하는 동작은 다음과 같습니다.
dpkg --install A-new.deb
업그레이드 거부됨(B가 A에 의존하기 때문에)dpkg --install B-new.deb
업그레이드 거부됨(A를 먼저 업그레이드해야 하기 때문)dpkg --install A-new.deb B-new.deb
A, B 업그레이드dpkg --install A-new.deb B-new.deb
그리고 아무런 변경 없이 A의 업그레이드가 실패했습니다.
(즉, A와 B의 이전 버전이 설치된 상태입니다.)
내가 시도한 것:
Depends:
제어 파일의 B 라인에 A(버전 포함)를 추가합니다.
dpkg --install A-new.deb
A는 업그레이드하고 B는 이전 버전을 유지합니다.dpkg --install B-new.deb
B는 업그레이드되었지만 Unpacked 상태이고 종속성으로 인해 구성이 거부되었습니다.dpkg --install A-new.deb B-new.deb
A와 B가 업그레이드되었습니다.dpkg --install A-new.deb B-new.deb
그리고 A의 업그레이드가 실패하면
A는 이전 버전으로 남고 B는 Unpacked 상태의 새 버전입니다.
따라서 3. 원하는 동작만 준수합니다.
Pre-Depends:
제어 파일의 B 라인에 A(버전 포함)를 추가합니다.
dpkg --install A-new.deb
A는 업그레이드하고 B는 이전 버전을 유지합니다.dpkg --install B-new.deb
종속성으로 인해 업그레이드가 거부되었습니다.dpkg --install A-new.deb B-new.deb
A는 업그레이드되고 B는 종속성 문제로 인해 이전 버전을 유지합니다.dpkg --install A-new.deb B-new.deb
그리고 아무런 변경 없이 A의 업그레이드가 실패했습니다.
(즉, A와 B의 이전 버전이 설치된 상태입니다.)
여기서는 2.와 4.만 원하는 동작과 일치합니다.
원하는 동작을 어떻게 얻을 수 있습니까?