
데비안 패키지에 따르면유지관리자 스크립트 문서, 사전 설치 스크립트는 install
또는 upgrade
첫 번째 인수를 사용하여 호출할 수 있습니다.
스크립트
preinst
는 다음과 같은 방법으로 호출될 수 있습니다.
new-preinst
설치하다new-preinst
설치하다이전 버전 새 버전new-preinst
업그레이드이전 버전 새 버전
install old-version new-version
이들 그리고 의 차이점은 무엇인가요 upgrade old-version new-version
? 첫 번째 형식(단지 )은 분명해 보이지만 이전 버전 번호와 새 버전 번호가 지정되는 위치 와 install
차이점을 이해하지 못합니다 .install
upgrade
답변1
이에 대한 설명은 다음과 같습니다.'세부정보' 섹션:
- 패키지가 이미 완전히 설치된 경우 이전 버전과 새 버전을
preinst
사용하여 호출됩니다 .upgrade
- 패키지가 이전에 설치되었고 여전히 구성 파일이 있는 경우("Config-Files" 상태,즉
rc
의dpkg -l
출력 과 같이 표시되며 이전 버전과 새 버전preinst
으로 호출됩니다 .install
- 패키지가 새로 설치되거나 이전에 제거된 경우 버전 정보 없이
preinst
호출됩니다 .install
preinst
압축 풀기 단계 이전에 실행되므로 이전 upgrade
버전의 패키지 콘텐츠를 사용할 수 있음을 나타내고 install
패키지 콘텐츠의 버전이 없음(구성 파일 제외)을 나타냅니다. 별도로 버전 정보가 제공되면 처리해야 하는 구성 파일이 있을 수 있음을 나타냅니다.
upgrade
와 사이의 차이가 중요한 시나리오는 많지 않지만 install
, 떠오르는 시나리오 중 하나는 데이터 내보내기와 관련된 업그레이드입니다. 예를 들어 upgrade
모드 에서는slapd
은(는) preinst
데이터베이스를 내보냅니다.; install
적절한 도구가 없기 때문에 모드 에서는 그렇게 할 수 없습니다 .
답변2
고려하다:
- 패키지 A, 버전 x를 설치합니다.
- 패키지 A를 제거하지만 제거하지 않고 구성 파일, 사용자, 그룹 등이 남아 있습니다.
- 패키지 A, 버전 y를 설치합니다.
이제 관리자 스크립트는 이러한 구성 파일, 사용자, 그룹 등을 처리해야 합니다. 엄밀히 말하면 업그레이드가 아니라 설치만 하는 것입니다. 여기 두 번째 순서도에서 이를 볼 수 있습니다."이전에 제거되었지만 제거되지 않은 패키지 설치"