Определение альтернатив в зависимостях 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