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
유틸리티를 설치했습니다.# dnf 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 pello.spec Wrote: /home/admiller/rpmbuild/SRPMS/pello-0.1.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
유틸리티를 설치했습니다.# dnf install rpm-build
절차
소스 RPM이 포함된
~/rpmbuild/SRPMS/
지시문으로 이동합니다.$ cd ~/rpmbuild/SRPMS/
소스 RPM에서 바이너리 RPM을 다시 빌드합니다.
$ rpmbuild --rebuild <srpm>
srpm 을 소스 RPM 파일의 이름으로 바꿉니다.
예를 들어 SRPM에서 p
ello
,pello
,cello
를 다시 빌드하려면 다음을 입력합니다.$ rpmbuild --rebuild bello-0.1-1.el8.src.rpm [output truncated] $ rpmbuild --rebuild pello-0.1.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
명령을 사용합니다. 벨로 ,
pello
, 셀오 용 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/pello-0.1.2-1.el8.src.rpm Updating / installing… …1:pello-0.1.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
옵션과 함께 사용합니다.
사전 요구 사항
시스템에
rpmbuild
유틸리티를 설치했습니다.# dnf install rpm-build
절차
사양
파일이 포함된~/rpmbuild/SPECS/
지시문으로 이동합니다.$ cd ~/rpmbuild/SPECS/
사양에서 바이너리 RPM을 빌드합니다.
$ rpmbuild -bb <spec_file>
예를 들어
사양
파일에서벨로
,pello
및cello
바이너리 RPM을 빌드하려면 다음을 입력합니다.$ rpmbuild -bb bello.spec $ rpmbuild -bb pello.spec $ rpmbuild -bb cello.spec