RPM条件可能需要在spec文件中

时间:2014-04-10 15:09:15

标签: rpm-spec

当主题阅读时,我想知道在RPM规范文件中是否可以根据条件制作所需的包?

例如,如果在安装目标上,请检查shell语句,例如主机正在使用绑定接口 并且只有让要求生效。

2 个答案:

答案 0 :(得分:1)

作为对原始问题的回答 - 是的,这是可能的,但您可以实现的内容取决于您希望用作条件的内容,并且在程序包的构建期间将这些内容写入程序包,而不是在安装期间。您可以轻松地在.spec中执行某些操作,例如

%if some_condition_is_true
Requires: foo
%else
Requires: bar
%fi

问题是,这有多大意义,您的具体用例是什么?

对于您所描述的内容,这是不可能的,因为您无法在安装期间更改软件包。您的方案有几个选项:

  • 创建两个版本的包,一个用于绑定,一个用于没有
  • 的主机
  • 分离在a中绑定主机所必需的部分 subpackage,只在需要它的主机上安装
  • 将绑定主机的逻辑放在%pre/%post脚本中,以便它只能有条件地运行。
  • 使用一些虚拟需求,这些需求由多个包实现,然后在主机上添加一些配置,该配置优先考虑您需要的包,用于绑定或不绑定的包。但这是特定于发行版的......

有关条件/动态宏的更多详细信息,自rpm.org v4.12以来大多数情况下可用,请参阅http://www.rpm.org/wiki/DynamicDependencies
有关%pre/%post和其他scriptlet的更多详细信息,请参阅https://fedoraproject.org/wiki/Packaging:ScriptletSnippets

答案 1 :(得分:0)

没有。您可以手动修改Requires行并关闭自动检测,然后根据需要处理可选项。