패키지 관리자 사전 설치 스크립트 `install`과 `upgrade`

패키지 관리자 사전 설치 스크립트 `install`과 `upgrade`

데비안 패키지에 따르면유지관리자 스크립트 문서, 사전 설치 스크립트는 install또는 upgrade첫 번째 인수를 사용하여 호출할 수 있습니다.

스크립트 preinst는 다음과 같은 방법으로 호출될 수 있습니다.

  • new-preinst설치하다
  • new-preinst설치하다이전 버전 새 버전
  • new-preinst업그레이드이전 버전 새 버전

install old-version new-version이들 그리고 의 차이점은 무엇인가요 upgrade old-version new-version? 첫 번째 형식(단지 )은 분명해 보이지만 이전 버전 번호와 새 버전 번호가 지정되는 위치 와 install차이점을 이해하지 못합니다 .installupgrade

답변1

이에 대한 설명은 다음과 같습니다.'세부정보' 섹션:

  • 패키지가 이미 완전히 설치된 경우 이전 버전과 새 버전을 preinst사용하여 호출됩니다 .upgrade
  • 패키지가 이전에 설치되었고 여전히 구성 파일이 있는 경우("Config-Files" 상태,rcdpkg -l출력 과 같이 표시되며 이전 버전과 새 버전 preinst으로 호출됩니다 .install
  • 패키지가 새로 설치되거나 이전에 제거된 경우 버전 정보 없이 preinst호출됩니다 .install

preinst압축 풀기 단계 이전에 실행되므로 이전 upgrade버전의 패키지 콘텐츠를 사용할 수 있음을 나타내고 install패키지 콘텐츠의 버전이 없음(구성 파일 제외)을 나타냅니다. 별도로 버전 정보가 제공되면 처리해야 하는 구성 파일이 있을 수 있음을 나타냅니다.

upgrade와 사이의 차이가 중요한 시나리오는 많지 않지만 install, 떠오르는 시나리오 중 하나는 데이터 내보내기와 관련된 업그레이드입니다. 예를 들어 upgrade모드 에서는slapd은(는) preinst데이터베이스를 내보냅니다.; install적절한 도구가 없기 때문에 모드 에서는 그렇게 할 수 없습니다 .

답변2

고려하다:

  1. 패키지 A, 버전 x를 설치합니다.
  2. 패키지 A를 제거하지만 제거하지 않고 구성 파일, 사용자, 그룹 등이 남아 있습니다.
  3. 패키지 A, 버전 y를 설치합니다.

이제 관리자 스크립트는 이러한 구성 파일, 사용자, 그룹 등을 처리해야 합니다. 엄밀히 말하면 업그레이드가 아니라 설치만 하는 것입니다. 여기 두 번째 순서도에서 이를 볼 수 있습니다."이전에 제거되었지만 제거되지 않은 패키지 설치"

관련 정보