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
# yum install rpm-build
Copy to Clipboard Copied! 다음
Hello World!
구현은~/rpmbuild/SOURCES/
디렉터리에 배치되었습니다.-
패키징하려는 프로그램의
사양
파일이 있습니다.
절차
생성된
사양
파일이 포함된~/rpmbuild/SPECS/
지시문으로 이동합니다.cd ~/rpmbuild/SPECS/
$ cd ~/rpmbuild/SPECS/
Copy to Clipboard Copied! 지정된
사양
파일을 사용하여rpmbuild
명령을 입력하여 source RPM을 빌드합니다.rpmbuild -bs <specfile>
$ rpmbuild -bs <specfile>
Copy to Clipboard Copied! -bs
옵션은 빌드 소스를 나타냅니다.예를 들어 벨로 ,
pello
및cello
프로그램에 대한 소스 RPM을 빌드하려면 다음을 입력합니다.rpmbuild -bs bello.spec rpmbuild -bs python-pello.spec rpmbuild -bs cello.spec
$ 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
Copy to Clipboard Copied!
검증
-
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
# yum install rpm-build
Copy to Clipboard Copied!
절차
소스 RPM이 포함된
~/rpmbuild/SRPMS/
지시문으로 이동합니다.cd ~/rpmbuild/SRPMS/
$ cd ~/rpmbuild/SRPMS/
Copy to Clipboard Copied! 소스 RPM에서 바이너리 RPM을 다시 빌드합니다.
rpmbuild --rebuild <srpm>
$ rpmbuild --rebuild <srpm>
Copy to Clipboard Copied! 예를 들어 SRPM에서 p
ello
,pello
,cello
를 다시 빌드하려면 다음을 입력합니다.rpmbuild --rebuild bello-0.1-1.el8.src.rpm rpmbuild --rebuild python-pello-1.0.2-1.el8.src.rpm rpmbuild --rebuild cello-1.0-1.el8.src.rpm
$ 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]
Copy to Clipboard Copied!
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 rpm -Uvh ~/rpmbuild/SRPMS/python-pello-1.0.2-1.el8.src.rpm rpm -Uvh ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
$ 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%]
Copy to Clipboard Copied!
4.6.3. 사양 파일에서 바이너리 RPM 빌드
사양
파일에서 바이너리 RPM을 빌드하려면 rpmbuild
명령을 -bb
옵션과 함께 사용합니다. -bb
옵션은 빌드 바이너리를 나타냅니다.
사전 요구 사항
시스템에
rpmbuild
유틸리티를 설치했습니다.yum install rpm-build
# yum install rpm-build
Copy to Clipboard Copied!
절차
사양
파일이 포함된~/rpmbuild/SPECS/
지시문으로 이동합니다.cd ~/rpmbuild/SPECS/
$ cd ~/rpmbuild/SPECS/
Copy to Clipboard Copied! 사양에서 바이너리 RPM을 빌드합니다.
rpmbuild -bb <spec_file>
$ rpmbuild -bb <spec_file>
Copy to Clipboard Copied! 예를 들어
사양
파일에서벨로
,pello
및cello
바이너리 RPM을 빌드하려면 다음을 입력합니다.rpmbuild -bb bello.spec rpmbuild -bb python-pello.spec rpmbuild -bb cello.spec
$ rpmbuild -bb bello.spec $ rpmbuild -bb python-pello.spec $ rpmbuild -bb cello.spec
Copy to Clipboard Copied!