如果在预安装脚本中未满足某些条件,则不要完成资源复制事务,而是将该软件包标记为已安装在rpmdb中

时间:2014-05-05 12:23:34

标签: rpm rpm-spec

我有一个驱动程序包B,当我触发安装程序包A的构建计划时,我希望将其作为依赖项引入。唯一的目的是充当包装程序包,它可以引入所有程序包系统工作所需的包,作为依赖。

如果驱动程序B是H / W平台,它应该只在系统上安装,否则它应该只将自己标记为安装在db中,而不是真正完成安装。问题是如果没有安装B,那么对B有依赖性的包A也将无法安装,因此整个构建计划失败。

并且包可以基于某些条件具有动态依赖性吗?因为那时我可以将该逻辑移动到包A,以便在满足某些条件时将B指定为依赖。

1 个答案:

答案 0 :(得分:1)

我不相信你能做你想做的事(至少不是直接做的)。

你可能得到的最接近的是让包B安装驱动程序文件/等的tarball。然后检查(在%post或类似)平台是否合适,只检查它是否正确。

话虽如此,我根本不建议使用该路径(如果您确实想这样做,我相信您会希望将所有这些文件标记为%ghost个文件,以便RPM至少知道它们)

我很快就会建议,如果驱动程序(或者可以在非H / W平台上)无害,您只需让它们安装并忽略它。或者,您可以使用Provides包中的“虚拟”B作为A包中的要求,并创建不包含文件的B的第二个版本(仅Provides),然后有多个适当使用的安装存储库。

RPM依赖项存储在包头中,并且不支持任何几乎像条件断言一样复杂的东西(我至少知道)。