0

我正在为内部软件构建 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 模块都安装在系统上,我可以毫无问题地运行脚本。

我究竟做错了什么?

4

2 回答 2

1

另一种选择是过滤掉自动依赖脚本的输出。我在这里记录如何做到这一点

于 2013-05-24T10:21:56.433 回答
1

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

我添加了

AutoReq: no

在构建期间对我的规范文件进行依赖检查。这可能很危险,所以在使用之前要小心。

于 2013-05-22T19:36:09.363 回答