Стандартный способ сделать это с помощью виртуальных средств: обеспечить RPM для каждого состояния, в котором они предоставляют виртуальный пакет, а зависимый RPM требует этот виртуальный пакет. Итак, в вашем примере vim
и emacs
оба Provides: text-editor
, и ваш пакет будет Requires: text-editor
.
Если пакеты, от которых вы зависите, не предоставляют подходящий виртуальный пакет, вы, вероятно, можете взломать его, создав собственные. Сделайте фиктивные my-package-vim-mode
и my-package-emacs-mode
об / мин, которые Requires: vim
и Requires: emacs
, соответственно, и Provides: my-package-text-editor
, затем получите пакет Requires: my-package-text-editor
.