배포판 간 바이너리 RPM 패키지를 빌드하는 방법은 무엇입니까?

배포판 간 바이너리 RPM 패키지를 빌드하는 방법은 무엇입니까?

Fedora 및 openSUSE에서 실행되는 배포판 간 바이너리 RPM 패키지를 구축하려고 합니다. Require:종속성 패키지 이름을 설정하기 위해 태그를 사용하고 있습니다 . 문제는 각 GNU/Linux 배포판 저장소의 패키지 이름이 다르다는 것입니다.

읽다:http://goo.gl/3MXSq, '%if 0%{?suse_version} ' 문을 사용하여 릴리스 간 .spec 파일을 제공합니다. 즉, 종속성 목록은 설치 시간이 아닌 빌드 시간에 결정됩니다.

바이너리 RPM 패키지 내에 조건부 deps 목록을 설정하는 방법이 있습니까?

답변1

예, 귀하가 링크한 openSUSE 위키 페이지 링크가 이에 대해 자세히 설명하므로 이는 확실히 가능합니다. 이를 수행하는 일부 공급업체도 있습니다.Fedora/openSUSE용 google-chrome RPM 패키지(다른 rpm 배포판에서도 잘 작동함)은 주요 rpm 배포판을 포괄하는 rpm 패키지가 하나만 있는 예입니다.

하지만 당신은 당신의 필요에주의를 기울여야합니다. Requires:필요할 수 있는 바이너리와 같은 일반 패키지를 구별해야 합니다 . 수동으로 추가해야 합니다. 파일 이름에 대한 요구 사항(예 Requires: /usr/bin/sendmail: )도 무시되며 일부 배포판에서는 파일을 약간 다른 위치에 배치하므로 이식성이 없습니다.

버전이 지정되지 않은 공통 라이브러리 패키지의 경우 Requires:이는 일반적으로 항상 잘못된 것입니다 . 그들은rpm 빌드 중에 자동으로 추가됨. 드문 경우지만, 주로 라이브러리 패키지에 특정 버전을 적용하고 명시적인 버전 관리 요구 사항을 추가해야 합니다. 이는 예를 들어 설명됩니다.http://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

답변2

절대. 죄송합니다. RPM 내에서는 조건부 deps 목록을 수행할 수 없습니다. 이를 수행하는 유일한 방법은 사양 파일에서 모든 배포 관련 deps를 제거하는 것입니다.

답변3

아니요, 그건 문제를 처리하는 방식이 아닙니다. 각 배포판에 대해 별도의 패키지를 구축해야 합니다. 이를 위해서는 각 배포판에 대해 약간 다른 모양의 사양 파일이 필요하며 때로는 배포판의 다른 버전에 대해 현재 버전보다 더 많은 것을 목표로 삼고 있습니다.

귀하의 "조건"은 한 단계 더 나아가서 RPM 자체 내에서가 아니라 사용할 RPM을 선택해야 합니다. 원하는 경우 이 프로세스를 자동화하는 조건이 있는 스크립트에서 이러한 사양 파일을 생성할 수 있지만 사양에서 패키지를 빌드하는 경우 배포별 사양이 필요합니다.

관련 정보