Это кажется простым вопросом, но документы мне кажется нечего сказать по этому поводу. Я хотел бы сделать что-то вроде Requires: vim or emacs
, но когда я это делаю, я фактически завишу от vim
, or
и emacs
. Каков синтаксис зависимости от того или иного из двух пакетов?
Как сделать так, чтобы RPM зависел от пакета a ИЛИ пакета b?
Ответы (3)
Стандартный способ сделать это — через виртуальные пакеты: каждый предоставляющий 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
.
Если у пакетов нет общего параметра Provide, и вы не хотите перестраивать и поддерживать ответвления этих пакетов, но они оба предоставляют один и тот же файл, вы можете положиться на файл. Например:
Requires: /usr/bin/pear
Таким образом, ваш пакет не будет иметь значения, если двоичный файл pear предоставляется php-pear или php53-pear.
В оборотах такой возможности нет. Require a virtual указывает, что у пакетов есть что-то общее, если оно есть.