tarball이 아닌 소스 디렉토리를 사용하여 RPM 빌드


14

조직에서는 RPM을 사용하여 모든 소프트웨어를 프로덕션 시스템에 배포합니다. 우리의 빌드 프로세스 (자동화 됨)는 버전 제어에서 소스를 체크 아웃하고 소스 디렉토리를 압축 해제 한 다음 해당 소스 tarball을 사용하여 rpmbuild를 실행합니다. rpmbuild는 해당 tarball 만 사용하여 소스를 untar하여 작업합니다. 따라서 전체 테이킹 및 언 타링 비즈니스는 빌드 프로세스에서 불필요한 추가 단계 인 것 같습니다. 추가 단계를 피하면서 스펙 파일에 소스 디렉토리를 지정하는 방법이 있습니까?

답변:


5

네, 그렇게 할 수 있습니다. Sources를 나열하지 마십시오 . 에서 %prep사용하지 않는 섹션 %setup매크로 (소스를 untars하는); 오히려 소스를 확인하십시오.

이렇게하면 SRPM을 구축 할 수 없습니다.


이거 야. rpm BUILD 디렉토리로 대신 체크 아웃하도록 빌드 절차를 수정해야합니다. 감사!
Eddie

10

이 질문은 다소 오래되었지만 다른 사람들이 검색에서 찾을 경우 SRPM을 생성 할 수있는 더 올바른 방법이 있습니다.

준비 섹션에서 설정 매크로 를 사용하는 대신 아카이브 압축을 풀지 않고 소스 디렉토리를 SOURCES에서 BUILD로 복사하여 원하는 작업을 직접 입력해야합니다. 또한 빌드 및 설치 섹션의 소스 디렉토리에 CD를 추가해야한다는 것을 알았습니다.

스 니펫 예제

%prep
# Don't use the setup macro anymore, replace it with typed-out commands
#%setup -q -n myapp-%{version}
cd %{_topdir}/BUILD
rm -rf myapp-%{version}
cp -rf %{_topdir}/SOURCES/myapp-%{version} .
cd myapp-%{version}
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}

해야 %{_topdir}/SOURCES%{_sourcedir}? 그리고 %{_topdir}/BUILD될 수 %{buildroot}있습니까? (제쳐두고, 당신은에서 추출을 대체 할 파일을 추가하려는 다른 비슷한하지만-상황에 관해서는 %setup, 페도라 문서는 사용하는 것이 좋습니다 %{SOURCE2}- 등 fedoraproject.org/wiki/Packaging:RPM_Source_Dir )
IBBoard
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.