2014-06-20 2 views
1

팀에서 제작중인 소프트웨어 용 RPM을 만들었습니다. 설치는 훌륭하게 작동하지만 소프트웨어를 제거하고 시스템을 작동 상태로 복원하는 논리를 추가하고 있습니다.RPM 제거시 소유 파일 건너 뛰기

설치의 일부로 파일 시스템에 구성 파일을 배치해야합니다. 그러나 RPM을 제거하면이 파일이 디렉토리에 남겨 지므로 패키지가 제거되면 서비스가 제대로 작동하지 않게됩니다.

을 .spec 파일 :

%files 
... 
%attr(640, tomcat, tomcat) /var/lib/owf/lib/OWFsecurityContext.xml 
... 

설치 로그 :

$ rpm -ql OurToolName | grep "OWFsecurityContext" 
/var/lib/owf/lib/OWFsecurityContext.xml 

제거 로그

$ cat Remove.log | grep "OWFsecurityContext" 
D: fini  100640 1 (498, 501)  2336 /var/lib/owf/lib/OWFsecurityContext.xml skip 
: RPM으로

cat Install.log | grep "OWFsecurityContext" 
... 
D: fini  100640 1 (498, 501)  2336 /var/lib/owf/lib/OWFsecurityContext.xml;53a41ad5 
... 

파일을 소유

RPM이이 파일을 "건너 뛰는"이유는 무엇입니까? RPM에이 파일을 제거하도록 지시하는 방법 (단지 % postun 부분에 제거를 강제하는 것 외에)이 있습니까?

편집 :하여 %files 섹션에서 나는이 질문에서 만든 패키지 (명시 적 파일 참조로, 그리고 : @EtanReisner 님의 댓글 후

, 파일이 두 패키지가 소유 한 것 같습니다 파일이 존재하는 전체 디렉토리를 소유하고있는 OWF 설치 RPM

파일이 두 개의 패키지에 의해 소유 된 것을 감안할 때 RPM을 제거하는 것 이외의 상태에 관계없이 RPM에이를 명시 적으로 알려주는 방법이 있습니까? %postun 스크립틀릿의 무력으로

+0

해당 파일이 스펙 파일의'% files' 섹션에 구성 파일로 표시되어 있습니까? 패키지를 제거하기 전에 'rpm -V OurToolName'은 무엇을 말합니까? –

+0

@EtanReisner -'% config'로 표시되지 않습니다. 질문에 표시된 것처럼 파일은 한 번만 언급됩니다. 'rpm -V OurToolName'는 다음을 반환합니다 :'S.5 .... T./usr/share/tomcat/apache-tomcat-7.0.42/webapps/OurTool/WEB-INF/spring.properties' 파일을 수정합니다. – shawmanz32na

+0

그 파일은 아마 두 개의 패키지가 소유하고 있습니까? 'rpm -qf/var/lib/owf/lib/OWFsecurityContext.xml'의 내용은 무엇입니까? –

답변

1

나는 RPM이 경쟁하는 소유권을 무시하고 어쨌든 당신이하려고하는 것처럼 파일을 제거 할 수있는 어떤 방법도 모르고있다. (그리고 내가 RPM이 건너 뛰는 이유를 알아 내려고했던 코드 파기의 비트 그 파일은 그 라인을 따라 아무 것도 제시하지 못했지만, 당시에는 그 파일을 찾지 못했습니다.)

나는 전체 디렉토리 소유권이 이런 종류의 이유로 일반적으로 권장되지 않는다고 생각합니다.

1

%config 파일로 표시해야합니다. 데이터베이스에서 실수로 데이터를 잃어 버리지 않기를 바라는 데이터베이스와 일치하지 않기 때문에 파일을 남겨두고있는 것입니다. 명시 적으로 설정 파일로 태그를 지정하면 설치 제거시 이름이 /var/lib/owf/lib/OWFsecurityContext.xml.rpmsave으로 바뀌며 이는 충돌하지 않아야합니다.