RPM을 사용하여 다른 컴퓨터에 설치하려고 하면 항상 실패하는 사양 파일을 편집하려고 합니다. CentOS를 사용하고 있습니다. 이것은 잘못된 것입니다.
error: Failed dependencies:
perl(ActsUtil) is needed by my_program
perl(ParseBishop) is needed by my_program
두 파일 모두 RPM의 종속성입니다. 문제는 이 두 파일이 실제로 RPM 패키지에 제공된다는 점이다. 두 파일 모두 .pm 파일이며 /opt/mysoftware/bin
. rpm - ivh --nodeps mysoftware
하지만 나는 이 방법을 사용하는 것을 좋아하지 않는다. 그래서 스펙 파일을 복구해 보았습니다. 다음은 내가 시도한 일부 코드입니다.
첫 시도
Summary:....
Name:..
Version:..
....
....
Provides: perl(ParseBishop), perl(ActsUtil)
...
...
%install
...
...
%changelog
두 번째 시도
Summary:....
Name:..
Version:..
....
....
Provides: ParseBishop, ActsUtil
...
...
%install
...
...
%changelog
세 번째 시도
Summary:....
Name:..
Version:..
....
....
Provides: ParseBishop.pm, ActsUtil.pm
...
...
%install
...
...
%changelog
네 번째 시도
Summary:....
Name:..
Version:..
....
....
Provides: /opt/mysoftware/bin/ParseBishop, /opt/mysoftware/bin/ActsUtil
...
...
%install
...
...
%changelog
"provide" 명령을 잘못 실행했나요? 아니면 이미 문제를 잘못 해결하고 있는 걸까요?
답변1
해결책을 찾았습니다. 문제는 내 제안이 잘못된 지역에 있다는 것입니다. 코드 상단에 있어야 합니다.
Summary:....
Name:..
Version:..
Provides: perl(ParseBishop), perl(ActsUtil)
...
...
%install
...
...
%changelog
이것을 확인하기 위해. 저는 rpm -qp --provides mysoftware.rpm
내장폴더에 넣어서 사용했어요. 내 패키지에 제공된 내용이 표시됩니다. 모든 도움에 감사드립니다.
답변2
rpm -i --nodeps my_program.rpm
모든 종속성 문제는 건너뜁니다.
답변3
사전 요청?
목록을 작성해야 하는지 궁금합니다 PreReqs
.
Prereq는 PreReq가 포함된 패키지보다 먼저 설치된다는 점에서만 require와 다릅니다. PreReq는 패키지 주문에만 사용됩니다. 그렇지 않은 경우 PreReq는 Requires: 종속성과 정확히 동일합니다.
원천:http://rpm5.org/docs/api/dependent.html
예
PreReq: perl(ActsUtil), perl(ParseBishop)
필요
Requires
이 RPM 설치에 이러한 Perl 모듈이 실제로 필요한 경우 온라인 상태여야 합니까 Provides
?
예
Requires: perl(ParseBishop), perl(ActsUtil)
파일만?
설치 중에 제공한 .pm 파일인 경우 이러한 파일은 RPM 설치 및 매니페스트를 제외하고 어디에도 나열할 필요가 없습니다.
이에 의존하는 다른 RPM에는 이 RPM만 필요합니다.