如何使RPM依赖于包OR包?

时间:2010-01-26 13:30:06

标签: dependencies rpm requires

这似乎是一个简单的问题,但the docs似乎没有任何关于这个问题的说法。我想做Requires: vim or emacs之类的事情,但当我这样做时,我实际上依赖于vimoremacs。取决于两个包中的一个或另一个的语法是什么?

3 个答案:

答案 0 :(得分:18)

执行此操作的标准方法是通过虚拟提供:为每个状态提供RPM,它们提供虚拟包,而从属RPM需要虚拟包。因此,在您的示例中,vimemacs都是Provides: text-editor,您的包将Requires: text-editor

如果您所依赖的软件包没有提供适当的虚拟软件包,您可能可以通过编写自己的软件包来解决这个问题。制作分别为my-package-vim-modemy-package-emacs-mode以及Requires: vim的虚拟Requires: emacsProvides: my-package-text-editor RPM,然后打包Requires: my-package-text-editor

答案 1 :(得分:7)

如果软件包没有公共Provide,并且您不想重建和维护该软件包的分支,但它们都提供相同的文件,则可以依赖于文件。例如:

Requires: /usr/bin/pear

如果梨二进制文件由php-pear或php53-pear提供,那么你的软件包将无关紧要。

答案 2 :(得分:2)

rpm中没有这样的功能。需要虚拟提供包具有共同点(如果有)。