Как мне установить 2 разные версии java на одном компьютере из EPEL

Название говорит само за себя. Я хочу иметь 2 версии java на одном компьютере. Например, 14.0.1.7 и 14.0.2.12 (оба находятся в репозитории EPEL7).

Если я устанавливаю их один за другим через yum , yum удалит первую версию и оставит только последнюю. Если я устанавливаю их через rpm , зависимости разрешаются, но не устанавливаются автоматически. Если я установлю сначала с yum , а затем с rpm , тогда он будет работать и сохранит обе версии, но rpm не установит никаких дополнительных зависимостей, если появится сообщение какой-то момент, и было бы здорово иметь возможность сделать это с помощью только одного инструмента.

Все упомянутые java являются OpenJDK; EPEL7 имеет следующие скользящие пакеты (например: java-14-openjdk-14.0.1.7-2.rolling.el7.x86_64 , java-14-openjdk-14.0.2.12-1.rolling. el7.x86_64 ).

Есть идеи?

3
задан 15 September 2020 в 18:14
4 ответа

Не знаете. Выполните обновление до более позднего пакета, в котором есть исправления.

java-latest-openjdk 14.0.2.12-1 заменяет 14.0.1.7-2 . Зеркала EPEL не будут содержать старую версию, что является их обычной политикой.

В примечаниях к выпуску говорится, что версия 14 с исправлениями безопасности 14.0.2 + 12 . Обратите внимание на обычные данные часового пояса и изменения сертификата x509, а также исправления ошибок. Подумайте, действительно ли вам нужно закрепить эту версию. В документации указано, что это второстепенный отладочный выпуск, который вы собираетесь использовать.

Если вы обнаружите необходимость сохранить предыдущую версию, необходимо решить две проблемы: получение пакета и его установка. Старой версии больше нет на зеркалах, рассмотрите возможность настройки собственного частного зеркала или кеширующего прокси для архивации старых версий. И эти две версии не могут быть установлены параллельно. Изучите способ иметь две параллельные среды, будь то контейнеры, виртуальные машины или служебные программы диспетчера времени выполнения, которые специально позволяют выбрать среду выполнения Java.

5
ответ дан 4 January 2021 в 07:39

Это один из основных вариантов использования Docker, в котором контейнер может содержать разные вспомогательные библиотеки и / или разные версии приложений в их собственных изолированных средах без накладных расходов и сложности виртуализации.

В простейшем Dockerfile можно было однажды получить базовый образ CentOS или RHEL, добавить репозитории и установить нужные пакеты.

Важно, что здесь, и если цель может быть выражена через контейнеры. В большинстве случаев это возможно. Вот пример файла докеров:

FROM centos

RUN yum update -y
RUN yum install -y epel-release
RUN yum install -y java-14-openjdk-14.0.1.7-2.rolling.el7.x86_64

ENV JAVA_HOME /etc/alternatives/jre
WORKDIR /app
EXPOSE 8080
CMD [run.sh]

Этот последний блок почти полностью составлен, но действителен. Если вы можете представить свое приложение как микросервис, это решение на основе докеров может иметь большой смысл.

В противном случае вы можете добиться аналогичных результатов с контейнером LXD, за исключением того, что вы можете раскрыть весь IP-адрес (как и ВМ). Вы также можете использовать виртуальную машину. Оба они более сложны, чем решение на основе докеров, которое предоставляет одну комбинацию IP / порта для каждого приложения.

3
ответ дан 4 January 2021 в 07:39

Краткий ответ: используйте диспетчер времени выполнения Java, такой как SDKMAN! или jEnv

Длинный ответ: по умолчанию пакет менеджеры стараются поддерживать последнюю версию пакетов в вашей системе. Вот почему обычно можно найти альтернативные менеджеры пакетов, подобные приведенным выше, для разных языков (pyenv или conda для python, nvm для node / js и т. Д.).

Вы упомянули, что это для EPEL, что может означать, что вы ограничены доступ в Интернет. Это может быть проблемой. В общем, хотя эти альтернативные менеджеры пакетов устанавливаются в сеансе пользователя, и контролируемые переменные среды влияют только на текущего пользователя. Это может быть преимуществом или недостатком в зависимости от того, над чем именно вы работаете.

Без дополнительной информации я думаю, что использование существующих инструментов, упомянутых выше (кстати, могут быть и более новые), может быть хорошим местом для начала. Не стесняйтесь добавлять дополнительную информацию, если это необходимо, и удачи!

3
ответ дан 4 January 2021 в 07:39

Отметьте этот пост, сайт Redhat

https://access.redhat.com/node/3040171

С уважением.

-2
ответ дан 4 January 2021 в 07:39

Теги

Похожие вопросы