Определение альтернатив в зависимостях RPM

У меня есть приложение Java, которое я упаковываю как RPM. В идеале я хотел бы указать Java как зависимость. Мне нужно установить в средах Fedora и RHEL. Проблема заключается в том, что Java RHEL называется "java", в то время как Fedora не предоставляет дистрибутив Oracle/Sun, оставляя его для ручной загрузки с веб-сайта Oracle. Распространение Оракула Java называется либо "jre", либо "jdk" в зависимости от выбранного вами пакета.

Обычно в файле RPM SPEC я пишу:

Зависит от: java >= 1.6

Но поскольку RHEL предоставляет "java", а Fedora через Sun/Oracle предоставляет "jre" или "jdk" (и я не могу использовать OpenJDK), я немного привязан. Документация пока не показала способ сделать "java >= 1.6 || jre >= 1.6 || jdk >= 1.6 'и т.д. Поскольку пакеты Java не находятся под моим контролем, я не могу просто изменить одно или другое, чтобы указать" Предоставляет: Java".

В настоящее время я вижу только два варианта:

  • Опустить Java как зависимость
  • Создайте один RPM для Fedora, один для RHEL

Я не увлекаюсь ни одним из вариантов. Существуют ли другие способы достижения зависимости от Java, где у всех поставщиков есть разные имена?

Изменить: третий вариант - создать собственный виртуальный пакет Java для Fedora, который имеет зависимость от RPM Sun JDK.

Ответы

Ответ 1

Я пошел с созданием своего собственного виртуального пакета Java для Fedora, который имеет зависимость от rdd на sun jdk.

Соответствующая часть файла SPEC в случае, если она помогает кому-либо еще:

Name: fedora-virtual-java
Version: 1.6
Provides: java
Requires: jdk > 1.6