dpkg: 종속 패키지 업그레이드(종속 패키지가 실패할 수 있음)

dpkg: 종속 패키지 업그레이드(종속 패키지가 실패할 수 있음)

두 개의 패키지 A와 B가 있습니다. 여기서 B는 패키지 A와 정확한 버전에 따라 달라지는 선택적 구성 요소입니다. 따라서 두 개의 패키지가 설치되어 있는 경우 동일한 버전인지 확인해야 합니다. 상황을 좀 더 복잡하게 만들기 위해 preinst스크립트에서 패키지 A 설치가 실패할 수 있습니다. 이 경우 아무것도 업그레이드하면 안 됩니다.

따라서 A와 B가 설치된 경우 원하는 동작은 다음과 같습니다.

  1. dpkg --install A-new.deb
    업그레이드 거부됨(B가 A에 의존하기 때문에)
  2. dpkg --install B-new.deb
    업그레이드 거부됨(A를 먼저 업그레이드해야 하기 때문)
  3. dpkg --install A-new.deb B-new.deb
    A, B 업그레이드
  4. dpkg --install A-new.deb B-new.deb그리고 아무런 변경 없이 A의 업그레이드가 실패했습니다.
    (즉, A와 B의 이전 버전이 설치된 상태입니다.)

내가 시도한 것:

Depends:제어 파일의 B 라인에 A(버전 포함)를 추가합니다.

  1. dpkg --install A-new.deb
    A는 업그레이드하고 B는 이전 버전을 유지합니다.
  2. dpkg --install B-new.deb
    B는 업그레이드되었지만 Unpacked 상태이고 종속성으로 인해 구성이 거부되었습니다.
  3. dpkg --install A-new.deb B-new.deb
    A와 B가 업그레이드되었습니다.
  4. dpkg --install A-new.deb B-new.deb그리고 A의 업그레이드가 실패하면
    A는 이전 버전으로 남고 B는 Unpacked 상태의 새 버전입니다.

따라서 3. 원하는 동작만 준수합니다.

Pre-Depends:제어 파일의 B 라인에 A(버전 포함)를 추가합니다.

  1. dpkg --install A-new.deb
    A는 업그레이드하고 B는 이전 버전을 유지합니다.
  2. dpkg --install B-new.deb
    종속성으로 인해 업그레이드가 거부되었습니다.
  3. dpkg --install A-new.deb B-new.deb
    A는 업그레이드되고 B는 종속성 문제로 인해 이전 버전을 유지합니다.
  4. dpkg --install A-new.deb B-new.deb그리고 아무런 변경 없이 A의 업그레이드가 실패했습니다.
    (즉, A와 B의 이전 버전이 설치된 상태입니다.)

여기서는 2.와 4.만 원하는 동작과 일치합니다.

원하는 동작을 어떻게 얻을 수 있습니까?

관련 정보