Как сделать так, чтобы RPM зависел от пакета a ИЛИ пакета b?

Это кажется простым вопросом, но документы мне кажется нечего сказать по этому поводу. Я хотел бы сделать что-то вроде Requires: vim or emacs, но когда я это делаю, я фактически завишу от vim, or и emacs. Каков синтаксис зависимости от того или иного из двух пакетов?


person kdt    schedule 26.01.2010    source источник


Ответы (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.

person Josh Kelley    schedule 26.01.2010

Если у пакетов нет общего параметра Provide, и вы не хотите перестраивать и поддерживать ответвления этих пакетов, но они оба предоставляют один и тот же файл, вы можете положиться на файл. Например:

Requires: /usr/bin/pear

Таким образом, ваш пакет не будет иметь значения, если двоичный файл pear предоставляется php-pear или php53-pear.

person Jakov Sosic    schedule 10.08.2012

В оборотах такой возможности нет. Require a virtual указывает, что у пакетов есть что-то общее, если оно есть.

person Ignacio Vazquez-Abrams    schedule 26.01.2010