저는 Fedora 31을 사용하며 소프트웨어 개발 작업을 하고 있습니다. 코드를 여러 가지 방법으로 사용해야 합니다.원천RPM 패키지는 상대적으로 수명이 짧습니다. 그래서 저는 단순히 패키지를 빌드하고 싶지만 대부분의 경우 실제로 "설치" 단계를 수행하지는 않습니다.
RPM yum 또는 DNF를 사용하여 이를 수행할 수 있는 방법이 있습니까? 명확히 하기 위해, 나는 바이너리가 실행되지만 "설치"되지 않도록 사양 파일에 지정된 대로 프로젝트를 빌드하고 싶습니다. 즉, 빌드된 파일이 실제로 시스템의 파일 시스템 구조에 복사되는 것을 원하지 않습니다.
답변1
RPM을 빌드하면 결과 바이너리가 시스템에 설치되어서는 안 됩니다(적어도 를 사용하여 이 동작을 관찰한 적이 없습니다 rpmbuild
). 일반적으로 패키지를 빌드하는 데 필요한 SRPM 및 빌드 종속성을 설치해야 합니다.
각 프로젝트에 대한 정보를 얻기 위해 시스템에 SRPM 패키지를 설치하지 않으려는 경우에는 다음을 권장합니다 SOURCES
.SPEC
mock
RPM 사람들로부터. 기본 Fedora 저장소에서 사용할 수 있습니다.dnf install mock
mock
rpmbuild
chroot를 사용하여 SRPM에서 직접 RPM을 빌드하기 위한 래퍼입니다. 이것의 장점은 SRPM이나 빌드 종속성이 chroot 내부에 설치되므로 메인 시스템에 설치할 필요가 없다는 것입니다.
또한 로컬 디렉터리나 소스 제어에서 직접 SRPM을 빌드할 수도 있습니다.
답변2
%install
건물을 지을 때의 단계는 실제로 rpm
는 아닙니다 .설치하다시스템에 바이너리를 설치하면 rpm 빌드 단계 중 하나인 RPM_BUILD_ROOT에 바이너리가 설치됩니다.
작업 흐름은 다음과 같을 수 있습니다.
rpm -i *.src.rpm
:설치 소스 rpm. 이는 src.rpm의 압축을 풀고 소스 파일, 사양 파일 등을 .rpm 아래에 배치합니다~/rpmbuild
.- 그러면 파일을 빌드하기 위한 사양 파일을
cd ~/rpmbuild/SPEC/
어디서 찾을 수 있나요 ?rpm
- [선택사항] 소스코드, 사양파일 등을 일부 수정할 수 있습니다.
- 이제
rpm
빌드 패키지를 사용하십시오rpmbuild -ba the.spec
더 자세한 설명은 다음과 같습니다.https://blog.packagecloud.io/eng/2015/04/20/working-with-source-rpms/.
노트: 변경 사항 없이 소스 rpm을 다시 작성하고 싶다면 언제든지 시도해 볼 수 있습니다.rpmbuild --rebuild the.src.rpm