다음과 같은 항목이 있다고 가정해 보겠습니다 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
허락하다
P
패키지 이름입니다.R1
,R2
, ...는Rn
해당 요구사항입니다.RB1
,RB2
, ...는RBm
BuildRequires 중 일부이고,R1
,R2
, ...는Rn
다른 Requires입니다.
이제 할 수 있다
PA
R1
Requires ,R2
, ...을 포함하는 패키지를 생성합니다 .Rn
그렇지 않으면 패키지가 비어 있습니다.- Requires가 이고 BuildRequires가 , , , ... 가
P
되도록 편집합니다 .PA
PA
RB1
RB2
RBm
나는 이것이 좋은 생각이라고 생각하지 않습니다.
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를 한 번만 변경하면 됩니다.