rpm 사양에서 Requires를 BuildRequires에 연결하는 방법은 무엇입니까?

rpm 사양에서 Requires를 BuildRequires에 연결하는 방법은 무엇입니까?

다음과 같은 항목이 있다고 가정해 보겠습니다 Requires.

Requires: a
Requires: b
Requires: c

이제 제가 말하고 싶은 것은 다음과 같습니다.

BuildRequires: <<Requires>>

이는 빌드를 위해 필요한 모든 것을 설치해야 함을 의미합니다. 따라서 첫 번째 섹션에서 항목을 제거하거나 추가하면 두 번째 섹션이 "연결"되므로 편집할 필요가 없습니다.

문제는——이 의존성을 어떻게 표현합니까?

이러한 계획은 공용 패키지에는 제공되지 않는 것으로 알고 있지만 가족용으로 요청합니다. 나와 내 가족을 위한 특급 패키지만 준비하고 배포되지 않습니다.

답변1

간단한 대답은 두 위치를 모두 대체하는 매크로를 정의하는 것입니다.

%define my_common_requires package-1, package-2, package-3

BuildRequires: %{my_common_requires}
Requires:      %{my_common_requires}

또한 이를 통해 두 줄 중 하나에 있어야 하는 콘텐츠를 수동으로 정의할 수 있지만 둘 다에 있을 수는 없습니다.

답변2

것 같다

BuildRequires:  %{requires}

"그냥 작동합니다" - 적어도 RPM 버전이 4.8.0인 RHEL6에서는 작동합니다.

답변3

허락하다

  1. P패키지 이름입니다.
  2. R1, R2, ...는 Rn해당 요구사항입니다.
  3. RB1, RB2, ...는 RBmBuildRequires 중 일부이고, R1, R2, ...는 Rn다른 Requires입니다.

이제 할 수 있다

  1. PAR1Requires , R2, ...을 포함하는 패키지를 생성합니다 . Rn그렇지 않으면 패키지가 비어 있습니다.
  2. Requires가 이고 BuildRequires가 , , , ... 가 P되도록 편집합니다 .PAPARB1RB2RBm

나는 이것이 좋은 생각이라고 생각하지 않습니다.

MyUsefulPackage
Requires: gcc
BuildRequires: gcc

~이 되다

MyUsefulPackage
Requires: MyUsefulRequires
BuildRequires: MyUsefulRequires

그리고

MyUsefulRequires
Requires: gcc

다른 패키지를 추가하려면 make다음과 같이 됩니다. MyUsefulPackage Requires: MyUsefulRequires BuildRequires: MyUsefulRequires

그리고

MyUsefulRequires
Requires: gcc
Requires: make

MyUsefulPackage의 종속성 요구 사항을 변경할 필요가 없습니다. MyUsefulRequires를 한 번만 변경하면 됩니다.

관련 정보