即使安装了依赖的perl模块,rpm安装也会失败

时间:2013-05-22 19:16:55

标签: perl-module rpm rpmbuild

我正在为内部软件构建rpm包。它包含二进制文件和perl脚本/模块。在构建过程中,rpmbuild会自动扫描perl代码并构建依赖perl模块,包括DBD:mysql。 当我尝试安装软件包rpm失败,错误,它找不到DBD :: mysql。 DBD :: mysql安装在系统上。

# 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模块安装在系统上

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

依赖项列表中的所有perl模块都安装在系统上,我可以毫无问题地运行脚本。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我弄明白了这个问题。 rpm只会知道使用rpm安装的软件包。我下载了DBD :: mysql源代码并手动编译并安装在我的系统上。

我添加了

AutoReq: no

到我的spec文件在构建期间转向依赖性检查。 这可能很危险,所以在使用它之前要小心。

答案 1 :(得分:1)

另一种选择是过滤掉自动依赖脚本的输出。我document here how to do it