Указание альтернатив в зависимостях RPM - PullRequest
14 голосов
/ 16 июня 2011

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

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

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

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

На данный момент вижу только два варианта:

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

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

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

1 Ответ

7 голосов
/ 16 июня 2011

Я создал свой собственный виртуальный java-пакет для Fedora, который зависит от скорости jdk для Sun.

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

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