플랫폼 독립적인 RPM을 제공하도록 MacOS 기반 rpmbuild 구성

플랫폼 독립적인 RPM을 제공하도록 MacOS 기반 rpmbuild 구성

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 구성에 대한 수정 사항.

답변2

대소문자 구분

buildostranslate: Darwin: Linux

여기에 이미지 설명을 입력하세요.

관련 정보