RPM: %post에 생성된 파일이 업그레이드 중에 손실되었습니다.

RPM: %post에 생성된 파일이 업그레이드 중에 손실되었습니다.

.spec파일에서 디렉토리를 생성하고 스테이지에서 파일을 터치합니다 %post.

%post
mkdir -p %{sharedstatedir}/my_app
touch %{sharedstatedir}/my_app/my_app_file.txt

그러나 dnf upgrade my_app /var/lib/my_app해당 내용은 삭제되며 다시 생성되지 않습니다. %{sharedstatedir}/my_app패키지 의 일부를 만들어 섹션에 추가할 수 있을 것 같은데 , 파일을 다시 만드는 것과 %{sharedstatedir}/my_app/my_app_file.txt같은 다른 방법이 있나요 ? my_app_file.txt 내용이 없어져도 상관없으며 임시저장소로 사용됩니다.%files%post

답변1

설치 개체를 선언하는 빈 파일을 추가할 수 있습니다.%config업데이트를 수행하기 전에 디스크에서 변경되는 경우 해당 내용이 변경되지 않고 유지되도록 하는 속성입니다.

하지만 솔직히 말해서 변경 가능한 공유 상태 파일(/var/lib에 저장됨)을 생성하기 %config위해 명령을 남용하거나 코드를 실행하지 마십시오 .%post알아채다적어도 당신이 그것을 사용할 때는 %config. 임시파일이 존재하지 않을 경우, 소프트웨어 자체에서 임시파일을 생성해야 합니다! 따라서 %file디렉토리를 생성한 %{sharedstatedir}/my_app다음 파일이 존재하지 않으면 소프트웨어를 패치하여 파일을 생성하십시오. 이상적으로는 관리자가 파일을 더 빠르거나 덜 안정적인 저장소에 배치하도록 선택할 수 있도록 파일 경로를 구성할 수 있어야 합니다.

관련 정보