MacOS에서 Java 패키지용 RPM을 빌드해야 합니다. 저는 homebrew 버전 4.14.2.1의 rpmbuild를 사용하고 있습니다. 툴체인이 올바르게 설정되었으며 유효한 RPM이 생성되었습니다. 한 가지 문제가 있습니다. RPM의 대상 OS 문자열은 "darwin"입니다. 왜냐하면 그것이 빌드된 곳이기 때문입니다. 그리고 이를 기본 Linux(CentOS라고 생각함)에 설치하려고 하면 다음 메시지와 함께 실패합니다.
Transaction check error:
package myrpm.noarch is intended for a different operating system
실제로 RPM을 쿼리하여 그 이유를 확인했습니다.
# rpm -qp --qf '%{os}\n' myrpm.noarch.rpm
darwin
소스 트리를 변경하지 않기 위해 필요한 속성을 로컬 파일에 넣고 싶습니다 .rpmrc
.
진정한 플랫폼 독립적인 RPM을 얻으려면 어떻게 설정해야 합니까?
이를 명확히 하기 위해 rpm에는 Java 8 JRE 및 POSIX 유사 파일 시스템이 있는 모든 시스템에서 실행되는 소프트웨어와 경로가 포함되어 있습니다. 최소한 darwin/MacOS 및 Redhat/CentOS/SuSE 유니버스에 설치할 수 있어야 합니다.
답변1
noarch RPM을 빌드하는 방법은 실제로 다음 지시어를 포함하도록 사양 파일을 수정하는 것입니다.
BuildArch: noarch
구성 파일(예를 들어)에서 동일한 것을 구성할 수 있는지 확실하지 않지만 .rpmrc
그렇게 하는 것은 아마도 나쁜 생각일 것입니다. 하지 마십시오. 직접 필요하지 않으면 이 작업을 수행하지 마십시오. 이 시점에서는 여전히 "깨진"(또는 호환되지 않거나 불완전한) rpmbuild 설정입니다.
사양 파일( .spec
확장자가 포함된 패키지 이름을 딴 파일)에 액세스할 수 있는 경우 noarch 패키지를 올바르게 빌드하려면 이 지시어로 업데이트하는 것을 고려하세요 BuildArch: noarch
. 이 경우 빌드된 위치에 상관없이 잘 작동합니다. 로컬 rpmbuild 구성에 대한 수정 사항.