2011-08-05 4 views
1

동일한 파일을 여러 번 나열하는 rpm 사양 파일에 몇 가지 문제가 있습니다. 이 스펙을 위해 우리는 보통의 컴파일 작업을하고 모든 것을 buildroot에 복사하는 스크립트를 가지고있다. 이 buildroot 안에는 최종 시스템에 설치해야하는 일반 스크립트가 많이 있으므로이 디렉토리를 나열하면됩니다.RPM 사양에서 동일한 파일의 여러 목록에 문제가 있습니다

그러나 문제는 스크립트 중 하나가 변경 될 수 있으며 구성 옵션이 스크립트 내에서 변경 될 수 있다는 것입니다. 따라서이 스크립트는 %config이라는 다른 속성으로 나열됩니다. 그러나 이는 스크립트가 충돌하는 속성으로 여러 번 정의된다는 것을 의미하므로 rpmbuild는 설치 패키지에 스크립트를 포함하지 않고 불만을 제기합니다.

이 문제를 처리하고 rpmbuild에게 두 번째 정의 만 사용하도록 지시하거나 스크립트를 두 부분으로 구성해야합니다 (하나는 구성을 포함하고 다른 하나는 실제 논리를 포함해야합니다).

답변

1

디렉터리를 지정하는 대신 파일 목록을 만든 다음 해당 파일에서 중복 파일을 제거 할 수 있습니다. 당신이

find $RPM_BUILD_ROOT -type f | sed -e "s|^$RPM_BUILD_ROOT||" > filelist 
sed -i "\|^foo/scriptname$|d" filelist 

%files -f filelist 
%config foo/scriptname 

에 당신은 그 부분을 수정

%files 
%dir foo 
%config foo/scriptname 

같은이 곳

그래서 당신은 또한 $의 RPM_BUILD_ROOT 대신 % {buildroot}을 사용할 수 있습니다.