4.6. RPM 빌드
rpmbuild 명령을 사용하여 RPM 패키지를 빌드할 수 있습니다. 이 명령을 사용하는 경우 rpmdev-setuptree 유틸리티에서 설정한 구조와 동일한 특정 디렉터리 및 파일 구조가 예상됩니다.
다양한 사용 사례와 원하는 결과에는 rpmbuild 명령에 서로 다른 인수 조합이 필요합니다. 다음은 주요 사용 사례입니다.
- 소스 RPM 빌드.
바이너리 RPM 빌드:
- 소스 RPM에서 바이너리 RPM 다시 빌드.
-
사양파일에서 바이너리 RPM 빌드.
4.6.1. 소스 RPM 빌드 링크 복사링크가 클립보드에 복사되었습니다!
SRPM(Source RPM)을 구축하면 다음과 같은 이점이 있습니다.
-
환경에 배포된 RPM 파일의 특정
Name-Version-Release의 정확한 소스를 유지할 수 있습니다. 여기에는 정확한사양파일, 소스 코드 및 모든 관련 패치가 포함됩니다. 이는 추적 및 디버깅 목적에 유용합니다. - 다른 하드웨어 플랫폼 또는 아키텍처에 바이너리 RPM을 빌드할 수 있습니다.
사전 요구 사항
시스템에
rpmbuild유틸리티를 설치했습니다.# yum install rpm-build다음
Hello World!구현은~/rpmbuild/SOURCES/디렉터리에 배치되었습니다.-
패키징하려는 프로그램의
사양파일이 있습니다.
절차
생성된
사양파일이 포함된~/rpmbuild/SPECS/지시문으로 이동합니다.$ cd ~/rpmbuild/SPECS/지정된
사양파일을 사용하여rpmbuild명령을 입력하여 source RPM을 빌드합니다.$ rpmbuild -bs <specfile>-bs옵션은 빌드 소스를 나타냅니다.예를 들어 벨로 ,
pello및cello프로그램에 대한 소스 RPM을 빌드하려면 다음을 입력합니다.$ rpmbuild -bs bello.spec Wrote: /home/admiller/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm $ rpmbuild -bs python-pello.spec Wrote: /home/admiller/rpmbuild/SRPMS/python-pello-1.0.2-1.el8.src.rpm $ rpmbuild -bs cello.spec Wrote: /home/admiller/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
검증
-
rpmbuild/SRPMS디렉터리에 결과 소스 RPM이 포함되어 있는지 확인합니다. 디렉터리는rpmbuild에서 예상되는 구조의 일부입니다.
4.6.2. 소스 RPM에서 바이너리 RPM 재빌드 링크 복사링크가 클립보드에 복사되었습니다!
소스 RPM(SRPM)에서 바이너리 RPM을 다시 빌드하려면 --rebuild 옵션과 함께 rpmbuild 명령을 사용합니다.
바이너리 RPM을 생성할 때 생성되는 출력은 상세화되어 디버깅에 유용합니다. 출력은 다양한 예에 따라 다르며 사양 파일에 해당합니다.
생성된 바이너리 RPM은 ~/rpmbuild/RPMS/ 디렉터리에 있습니다. 여기서ARCH는 아키텍처별이 아닌 경우 YOURARCH ~/rpmbuild/RPMS/noarch/ 디렉터리에 있습니다.
사전 요구 사항
시스템에
rpmbuild유틸리티를 설치했습니다.# yum install rpm-build
절차
소스 RPM이 포함된
~/rpmbuild/SRPMS/지시문으로 이동합니다.$ cd ~/rpmbuild/SRPMS/소스 RPM에서 바이너리 RPM을 다시 빌드합니다.
$ rpmbuild --rebuild <srpm>예를 들어 SRPM에서 p
ello,pello,cello를 다시 빌드하려면 다음을 입력합니다.$ rpmbuild --rebuild bello-0.1-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild python-pello-1.0.2-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild cello-1.0-1.el8.src.rpm [output truncated]
rpmbuild --rebuild 를 호출하려면 다음 프로세스가 포함됩니다.
-
SRPM의 콘텐츠(
spec파일 및 소스 코드)를~/rpmbuild/디렉터리에 설치합니다. - 설치된 콘텐츠를 사용하여 RPM 빌드.
-
사양파일 및 소스 코드 제거
다음 방법 중 하나를 빌드한 후 사양 파일 및 소스 코드를 유지할 수 있습니다.
-
RPM을 빌드할 때
--rebuild옵션 대신--recompile옵션과 함께rpmbuild명령을 사용합니다. 벨로 ,
python-pello,cello용 SRPM을 설치합니다.$ rpm -Uvh ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm Updating / installing… 1:bello-0.1-1.el8 [100%] $ rpm -Uvh ~/rpmbuild/SRPMS/python-pello-1.0.2-1.el8.src.rpm Updating / installing… …1:python-pello-1.0.2-1.el8 [100%] $ rpm -Uvh ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm Updating / installing… …1:cello-1.0-1.el8 [100%]
4.6.3. 사양 파일에서 바이너리 RPM 빌드 링크 복사링크가 클립보드에 복사되었습니다!
사양 파일에서 바이너리 RPM을 빌드하려면 rpmbuild 명령을 -bb 옵션과 함께 사용합니다. -bb 옵션은 빌드 바이너리를 나타냅니다.
사전 요구 사항
시스템에
rpmbuild유틸리티를 설치했습니다.# yum install rpm-build
절차
사양파일이 포함된~/rpmbuild/SPECS/지시문으로 이동합니다.$ cd ~/rpmbuild/SPECS/사양에서 바이너리 RPM을 빌드합니다.
$ rpmbuild -bb <spec_file>예를 들어
사양파일에서벨로,pello및cello바이너리 RPM을 빌드하려면 다음을 입력합니다.$ rpmbuild -bb bello.spec $ rpmbuild -bb python-pello.spec $ rpmbuild -bb cello.spec