2012-12-09 7 views
4

RPM을 만들고 싶고 현재 spec 파일에서 작업하고있는 tar.gz이 있습니다. .spec의 %files 섹션에 파일을 포함시키는 규칙이 무엇인지 이해할 수 없었습니다. 내 tar.gz은 두 개의 python 패키지로 구성되며 distutils setup()을 사용하여 간단히 setup.py을 호출하는 makefile을 통해 설치됩니다.RPM의 % 파일 섹션에 들어가야 할 내용

나는 현재 내 문서를 포함하지만 그 밖의 무엇을 포함하도록 선택하는 방법을 잘 아니 었습니다

:

또한
%files 
%doc README changelog 
... 

, 내 메이크는 응용 프로그램에 대한 man 페이지를 생성 이 파일을 .spec 파일에 어디에/어떻게 포함해야합니까?

나는이 작업을 레드햇에서하고 있습니다.

+2

두 패키지가 이미 distutils와 함께 패키지되어 있다면, 각각의 RPM을 빌드 할 때'setup.py bdist_rpm'을 사용하지 않는 이유는 무엇입니까? –

+1

[Fedora packaging guidelines] (http://fedoraproject.org/wiki/Packaging:Guidelines)는 spec 파일을 작성하는 방법에 대한 좋은 참고 자료입니다. – jbowes

+0

@Fuzzyfelt는 그것들을 그 방법과 함께 패키지화 할 수 있으며, man 페이지는 어떻게 사물에 적합할까요? – alh

답변

5

섹션에는 바이너리 패키지에 포함되어 대상 컴퓨터에 설치된 모든 파일을 나열해야합니다.

RPM을 책으로 작성하는 경우 스펙 파일은 두 가지 목적을 위해 제공됩니다. 소스 코드를 빌드 아티팩트로 변환하는 방법을 자세히 설명하는 빌드 스크립트와 대상 컴퓨터에 빌드 할 제품을 자세히 설명하는 패키징 스크립트입니다. 귀하의 경우, 빌드 측면은 매우 가볍습니다.

이 전통적인 접근 방식에서 메이크 파일은 빌드 단계에서 실행되고 %files 지시문은 결과 빌드 아티팩트 중 어떤 것이 설치되어야하는지 나열합니다. 분명한 점은 전통적인 접근 방식을 사용하여 make install을 사용하지 않거나 %files으로 파일을 선택할 때 RPM 빌드 디렉토리 (예 : /usr/lib/python/foo이 아닌 ~/rpmbuild/BUILD/usr/lib/python/foo 또는 그 밖의 다른 곳)에 설치하려면 DESTDIR과 함께 사용하십시오. .

그럼, 이전 섹션 (아마도 %install)에서 makefile을 실행하여 빌드 영역에 설치 한 다음 %files 섹션을 사용하여 결과를 선택해야합니다. %files 섹션에서 와일드 카드를 사용할 수 있으므로 모든 개별 파일에 명시 적으로 이름을 지정할 필요가 없습니다.

의미가 있습니까? 나는 당신의 질문을 오해 했습니까?

+0

OK,'DESTDIR'을 사용하고'DESTDIR'에 나타나는'% install'의 모든 출력 파일을 포함하는 것이 안전해야합니까? 또한,'make'에 의해 생성 된'man' 파일을 어떻게 통합 할 수 있는지 알고 있습니까? 나는 그것을'DESTDIR'에 출력하고'% files'에 그것을 나열하겠습니까? – alh

+0

당신의 빌드가'DESTDIR'에 무엇을 넣을지 전혀 모르겠지만, 네, 모든 출력물을 한 곳에 모아 둘 수 있습니다. 그리고 예, 맨 페이지를 다른 파일과 동일한 빌드 디렉토리에 넣을 수 있습니다. 실제로, 반드시해야합니다. 하지만,'% doc'로 플래그를 지정하는 것을 잊지 마십시오. 나는 이것이 절대적으로 필요하다고 생각하지 않지만 좋은 형태라고 생각합니다. –