在文件相关性检查之前是否执行了RPM Spec部分?

时间:2010-07-20 17:57:05

标签: dependencies install rpm specifications

我正在尝试构建一个RPM,如果它们不存在,将安装文件依赖项。是否存在将在RPM检查依赖项之前执行的RPM规范部分。 (我指的是文件依赖项而不是“Requires”标题中列出的包依赖项。)

实施例: 如果我有一个perl文件并且设置了执行权限位。 RPM将检查Perl是否安装在perl文件中指定的“#!/ bin / perl”位置。 (看起来它检查RPM数据库以查看perl是否安装在该位置而不是检查实际文件位置)如果perl未安装在/ bin / perl位置,我想在RPM出错之前安装它我[/ MY_PACKAGE]需要“/ bin / perl”

问题: 由于文件依赖性检查RPM数据库有没有办法更新已安装的位置?即如果我的perl脚本指定“#!/ usr / local / bin / perl”但我的RPM数据库中的perl位于“/ usr / bin / perl”中,如何更新RPM数据库?手动符号链接“/ usr / local / bin / perl”将无法正常工作,因为它不会更新RPM数据库。 RPM安装程序仍会说[MY_PACKAGE]需要“/ usr / local / bin / perl”

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

我认为你正在尝试使用错误的工具来完成工作。 rpm的工作是安装它告诉安装的软件包,而不是去寻找其他软件包。拉入依赖项是更高级别工具的工作,例如apt,urpmi或yum。

对于您提供的示例,如果您的包需要/usr/local/bin/perl,那么其他一些包必须提供/usr/local/bin/perl。这可能是一个包含/usr/local/bin/perl/usr/bin/perl的符号链接的包,并声明对/usr/bin/perl的依赖(我不知道如何让你需要{{1}的最低版本虽然)。