"dnf 업그레이드..." 파일 삭제

"dnf 업그레이드..." 파일 삭제

내 응용 프로그램은 세 가지 다른 패키지에 있고 파일을 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

관련 정보