我正在为内部软件构建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模块都安装在系统上,我可以毫无问题地运行脚本。
我做错了什么?
答案 0 :(得分:1)
我弄明白了这个问题。 rpm只会知道使用rpm安装的软件包。我下载了DBD :: mysql源代码并手动编译并安装在我的系统上。
我添加了
AutoReq: no
到我的spec文件在构建期间转向依赖性检查。 这可能很危险,所以在使用它之前要小心。
答案 1 :(得分:1)
另一种选择是过滤掉自动依赖脚本的输出。我document here how to do it。