rpm 패키지의 잘못된 종속성을 방지하는 방법은 무엇입니까?

rpm 패키지의 잘못된 종속성을 방지하는 방법은 무엇입니까?

RHEL7용 패키지를 만들고 있습니다. 패키지를 설치하려고 하면

# yum localinstall mypackage-0.0-1.el7.rpm 
(...)
--> Running transaction check
---> Package webmin-GPI-init.noarch 0:0.0-1.el7 will be installed
--> Processing Dependency: perl(.::guardian-lib.pl) for package: webmin-GPI-init-0.0-1.el7.noarch
--> Processing Dependency: perl(.::hostconfig-lib.pl) for package: webmin-GPI-init-0.0-1.el7.noarch
--> Processing Dependency: perl(.::init-lib.pl) for package: webmin-GPI-init-0.0-1.el7.noarch

나는 Perl 모듈의 이름을 기꺼이 지정하는 것이 .::init-lib.pl바람직하지 않다고 생각합니다. 코드에서 다음과 같은 것을 찾을 수 있습니다.

#! /usr/bin/perl
require './init-lib.pl';
require './guardian-lib.pl'; 
require './hostconfig-lib.pl';

win32파일 에서 다음 옵션을 사용하여 삭제 했습니다 .spec.

%{?perl_default_filter}
%global __requires_exclude perl\\(VMS|perl\\(Win32|perl\\(\\.

점으로 시작하는 Perl 패키지에 대한 종속성을 제거하는 방법은 무엇입니까?

인터넷을 뒤져 찾아보니https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering그리고 내가 이해하지 못하는 다른 메일링 리스트도요.

답변1

rpmbuild는 rpm 패키지의 내용을 분석하여 프로그램을 실행해야 하는 항목을 자동으로 결정합니다. 특정 Perl 모듈을 사용하는 경우 프로그램을 제대로 실행하려면 해당 모듈을 설치해야 합니다.

그러나 rpm이 모든 작업을 수행하는 것을 원하지 않으면 다음을 추가할 수 있습니다.

AutoReqProv : no

사양 파일에. 더 많은 정보를 알고 싶다면;이것을 읽어보세요

답변2

왜 사용하지 않습니까:

%define __requires_exclude ^perl(\s|)\(.*\)$

관련 정보