2013-05-22 1 views
0

내부 소프트웨어 용 rpm 패키지를 빌드하고 있습니다. 바이너리와 perl 스크립트/모듈을 포함합니다. 빌드 프로세스 중에 rpmbuild는 자동으로 perl 코드를 검사하고 DBD : mysql을 포함한 종속성 perl 모듈을 빌드합니다. 소프트웨어 패키지를 설치하려고하면 rpm이 DBD :: mysql을 찾을 수 없다는 오류와 함께 실패합니다. DBD :: mysql이 시스템에 설치됩니다.종속 perl 모듈이 설치되어 있어도 rpm 설치가 실패합니다.

# rpm -ivh conserver-admin-8.1.18-.el5.CME_1.0.x86_64.rpm 
error: Failed dependencies: 
    perl(DBD::mysql) is needed by conserver-admin-8.1.18-.el5.CME_1.0.x86_64 

# rpm -qp --requires conserver-admin-8.1.18-.el5.CME_1.0.x86_64.rpm 
/bin/ksh 
/bin/sh 
/usr/bin/perl 
perl(CMEconserver) 
perl(DBD::mysql) 
perl(DBI) 
perl(Data::Dumper) 
perl(Exporter) 
perl(FindBin) 
perl(Getopt::Std) 
perl(POSIX) 
perl(Socket) 
perl(lib) 
perl(strict) 
perl(warnings) 
rpmlib(CompressedFileNames) <= 3.0.4-1 
rpmlib(PayloadFilesHavePrefix) <= 4.0-1` 

펄 모듈은 의존성 목록에서 펄 모듈의 모든 시스템에 설치되어있는 시스템

# perl -e 'use DBD::mysql;' 
# 

에 설치되어 있고 나는 아무 문제없이 스크립트를 실행할 수 있습니다.

내가 뭘 잘못하고 있니?

답변

1

문제를 발견했습니다. rpm은 rpm을 사용하여 설치 한 패키지에 대해서만 알 수 있습니다. DBD :: mysql 소스를 다운로드하여 수동으로 컴파일하고 내 시스템에 설치했습니다.

내가 빌드시 종속성 검사의 내 사양 파일 차례에
AutoReq: no 

을 추가했다. 위험 할 수 있으므로 사용하기 전에주의해야합니다.

+0

큰 망치를 적용했습니다. ;) 나는 그것을 다시 켜고 그것이 필요한 것의 목록을 얻는 것이 좋습니다. 그런 다음 그것을 끄고 각각에 대해 spec 파일에'Requires' 태그를 수동으로 추가하십시오. 아마도/usr/lib/perl/site-perl/etcetcetc/DBD/mysql.pm'과 같은 것일 수도 있습니다. RPM이 내부적으로 만 사용되고 있기 때문에 괜찮을 것입니다. –

1

또 다른 옵션은 자동 종속성 스크립트의 출력을 필터링하는 것입니다. I document here how to do it.

+0

감사합니다. 앞으로 귀하의 스크립트를 시험해 보겠습니다. 이 특별한 경우에는 mysql이 내가 사용하고있는 유일한 비표준 펄 패키지이기 때문에 무거운 망치를 사용할 수있었습니다. 다른 요구 사항으로 인해 패키지를 두 개의 RPM으로 나눠야했습니다. 하나는 바이너리 실행 파일이고 다른 하나는 펄 코드뿐입니다. 필자는 Perl 패키지에서 AutoReq를 사용했다. –