내 응용 프로그램은 세 가지 다른 패키지에 있고 파일을 rpm
작성했으며 .spec
설치가 예상대로 작동하고 dnf remove
패키지를 제거하고 구성 파일을 정리하고 필요에 따라 종속성을 가져왔습니다. 그러나 dnf upgrade
이렇게 하면 이전 파일을 새 파일로 덮어쓰지만(예상대로) 내 구성 파일도 삭제된다는 것을 알았습니다 . 내 이해는 dnf upgrade
패키지가 제거된 다음 설치되지 않고 새 파일이 이전 파일 위에 설치된다는 것입니다. 다음은 트랜잭션 로그입니다 dnf
.
Running transaction
Preparing : 1/1
Running scriptlet: my-app-libs-0.1.0.0-0071.x86_64 1/1
Upgrading : my-app-libs-0.1.0.0-0071.x86_64 1/6
Upgrading : my-app-hooks-0.1.0.0-0071.x86_64 2/6
Upgrading : my-app-0.1.0.0-0071.x86_64 3/6
Running scriptlet: my-app-0.1.0.0-0071.x86_64 3/6
Running scriptlet: my-app-0.1.0.0-0048.x86_64 4/6
Cleanup : my-app-0.1.0.0-0048.x86_64 4/6
Running scriptlet: my-app-0.1.0.0-0048.x86_64 4/6
Cleanup : my-app-hooks-0.1.0.0-0048.x86_64 5/6
Cleanup : my-app-libs-0.1.0.0-0048.x86_64 6/6
Running scriptlet: my-app-libs-0.1.0.0-0048.x86_64 6/6
Verifying : my-app-libs-0.1.0.0-0071.x86_64 1/6
Verifying : my-app-libs-0.1.0.0-0048.x86_64 2/6
Verifying : my-app-hooks-0.1.0.0-0071.x86_64 3/6
Verifying : my-app-hooks-0.1.0.0-0048.x86_64 4/6
Verifying : my-app-0.1.0.0-0071.x86_64 5/6
Verifying : my-app-0.1.0.0-0048.x86_6 6/6
나는 무엇인지 알고 싶다청소하다위의 단계가 완료되고 있습니다. 그리고 스크립트의 역할스크립트 실행실제로 전화했어?
답변1
설치, 업그레이드 및 제거 중에 트리거가 호출됩니다. "업그레이드"는 실제로 이전 버전을 제거한 다음 새 버전을 설치하는 것을 의미합니다. 트리거에는 $1
업그레이드 여부를 나타내는 플래그( )가 있습니다 . 전체 설명은 다음 위치에 있습니다.https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/
사양 파일에서 다음을 사용합니다.
%post
if [ $1 == 1 ]
then
# first time install, rather than upgrade
fi
%postun
if [ $1 == 0 ]
then
# actual uninstall, rather than upgrade
fi