【发布时间】:2011-01-09 12:34:35
【问题描述】:
这似乎是一个简单的问题,但the docs 似乎没有什么要说的。我想做类似Requires: vim or emacs 的事情,但是当我这样做时,我实际上依赖于vim、or 和emacs。依赖两个包中的一个或另一个的语法是什么?
【问题讨论】:
标签: dependencies rpm requires
这似乎是一个简单的问题,但the docs 似乎没有什么要说的。我想做类似Requires: vim or emacs 的事情,但是当我这样做时,我实际上依赖于vim、or 和emacs。依赖两个包中的一个或另一个的语法是什么?
【问题讨论】:
标签: dependencies rpm requires
rpm 中没有这样的功能。需要一个包共有的虚拟提供,如果有的话。
【讨论】:
执行此操作的标准方法是通过虚拟提供:提供 RPM 的每个状态都表明它们提供了一个虚拟包,并且依赖的 RPM 需要该虚拟包。因此,在您的示例中,vim 和 emacs 都是 Provides: text-editor,而您的包将是 Requires: text-editor。
如果您所依赖的软件包没有提供适当的虚拟软件包,您可能会通过自己制作来解决这个问题。分别制作 my-package-vim-mode 和 my-package-emacs-mode 的虚拟 RPM 和 Requires: vim 和 Requires: emacs 和 Provides: my-package-text-editor,然后有你的包 Requires: my-package-text-editor。
【讨论】:
如果包没有共同的提供,并且您不想重建和维护该包的分支,但它们都提供相同的文件,您可以依赖一个文件。例如:
Requires: /usr/bin/pear
这样,如果 pear 二进制文件是由 php-pear 或 php53-pear 提供的,那么您的包将无关紧要。
【讨论】: