Гид по технологиям

Установка OpenJDK на Rocky Linux

• 7 min read • Linux • Обновлено 27 Nov 2025
Установка OpenJDK на Rocky Linux
Установка OpenJDK на Rocky Linux

Изображение: логотип Java и фрагмент кода для иллюстрации темы

Введение

Java — это объектно-ориентированный язык программирования, разработанный Sun Microsystems в 1995 году. Он создавался как переносимая высокоуровневая платформа с минимальными зависимостями от ОС. Главная идея — написать код один раз и запускать приложение на разных системах и платформах.

OpenJDK — свободная и открытая реализация Java SE и JDK. Первоначальный релиз OpenJDK состоялся в 2007 году под лицензией GNU GPL. Код OpenJDK совместим с Oracle JDK, и в большинстве случаев они функционально эквивалентны. Основное различие в политике распространения и лицензионных условиях: OpenJDK — открытый проект, Oracle JDK — проприетарный дистрибутив с отдельными условиями использования.

В этом руководстве вы научитесь:

  • Устанавливать OpenJDK из официального репозитория Rocky Linux (версии 8 и 11).
  • Ручно устанавливать более новые сборки (пример: OpenJDK 16) из tar.gz.
  • Переключать активную версию Java с помощью alternatives.
  • Настраивать переменную окружения JAVA_HOME системно и для отдельного пользователя.
  • Проверять установку и решать типичные проблемы.

Важно: все команды в примерах предполагают, что вы выполняете их от имени пользователя с правами root или через sudo.

Требования

  • Система Rocky Linux с доступом к интернету для скачивания пакетов.
  • Пользователь с привилегиями root или sudo.
  • Обновлённые репозитории и пакеты рекомендуются перед установкой.

Обновление репозиториев и поиск доступных пакетов OpenJDK

Перед установкой обновите список пакетов и сами пакеты:

sudo dnf update

Подтвердите обновление, если система предложит ввести y.

Список доступных пакетов OpenJDK в официальном репозитории можно получить командой:

dnf search openjdk

На экране вы увидите доступные пакеты, обычно для Rocky Linux предоставляются сборки OpenJDK 1.8 (Java 8) и 11.x. Если вам нужна более новая версия, её можно установить вручную из бинарного tar.gz.

Поиск пакетов OpenJDK в репозитории Rocky Linux

Установка OpenJDK 11 из репозитория

Чтобы установить Java 11 и набор разработки для неё, выполните:

sudo dnf install java-11-openjdk java-11-openjdk-devel

Подтвердите установку y при запросе. После завершения проверьте установленную версию:

java -version

Ожидаемый результат укажет на OpenJDK 11.

Проверка версии Java 11

Установка OpenJDK 8 из репозитория

Если проект требует Java 8, установите её так:

sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel

После установки проверьте:

java -version

Система покажет OpenJDK 1.8.

Проверка версии Java 8

Ручная установка OpenJDK 16 из tar.gz

Репозитории часто содержат LTS-версии (например, 8 и 11). Для получения более свежих сборок можно установить JDK вручную, скачав готовый бинарный архив.

Пример установки OpenJDK 16 из официального дистрибутива:

  1. Скачайте архив и распакуйте его:
wget https://download.java.net/java/GA/jdk16.0.2/d4a915d82b4c4fbb9bde534da945d746/7/GPL/openjdk-16.0.2_linux-x64_bin.tar.gz

tar -xf openjdk-16.0.2_linux-x64_bin.tar.gz

После распаковки появится каталог, например jdk-16.0.2.

  1. Перенесите каталог в стандартную директорию для JVM:
mkdir -p /usr/lib/jvm

mv jdk-16.0.2 /usr/lib/jvm/
  1. Зарегистрируйте бинарные пути в системе через alternatives (это позволит переключать версии):
alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-16.0.2/bin/java 0

alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-16.0.2/bin/javac 0

После этого новая версия появится в списке альтернатив.

Установка OpenJDK из tar.gz

Пояснение по командам alternatives:

  • alternatives --install добавляет вариант в систему.
  • При одинаковом приоритете система предложит выбрать вручную.
  1. Просмотрите зарегистрированные альтернативы:
alternatives --list

Вы увидите записи для java и javac, в том числе вашу сборку OpenJDK 16.

Список альтернатив

Переключение версии Java по умолчанию

После установки нескольких версий Java удобнее управлять активной версией с помощью команды alternatives.

  1. Чтобы выбрать версию java по умолчанию:
sudo alternatives --config java

Система выведет список доступных реализаций с номерами. Введите номер желаемой версии и нажмите Enter.

Выбор версии java

  1. Аналогично смените javac, если нужно:
sudo alternatives --config javac
  1. Проверьте активные версии:
java --version

javac --version

Проверка выбранной версии Java

В примере на сервере были установлены одновременно OpenJDK 11, OpenJDK 1.8 и ручная сборка OpenJDK 16.

Настройка переменной окружения JAVA_HOME

Переменная JAVA_HOME указывает приложениям путь к установленной JDK. Её можно задать системно для всех пользователей или в конфигурации отдельного пользователя.

Системная настройка JAVA_HOME

  1. Создайте файл конфигурации в /etc/profile.d:
cd /etc/profile.d/

nano java.sh
  1. Вставьте строку с корректным путём к установленной JDK. Пример для JDK 16:
JAVA_HOME=/usr/lib/jvm/jdk-16.0.2

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

Сохраните файл и выйдите (Ctrl+X, затем y и Enter в nano).

  1. Активируйте настройки:
source /etc/profile.d/java.sh
  1. Проверьте:
echo $JAVA_HOME

Проверка системной переменной JAVA_HOME

Настройка JAVA_HOME для одного пользователя

Если нужно переопределить системные настройки для конкретного пользователя, используйте файл ~/.bashrc или аналогичный в его домашней директории.

  1. Переключитесь на пользователя и откройте ~/.bashrc:
su - johndoe

nano ~/.bashrc
  1. Добавьте строки (пример для Java 1.8):
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH
  1. Примените изменения:
source ~/.bashrc
  1. Проверьте:
echo $JAVA_HOME

Проверка пользовательской переменной JAVA_HOME

Чтобы запустить команду в контексте конкретного JDK без изменения глобальных переменных, можно временно задать переменные в одной строке:

JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk command --option

Частые ошибки и способы их устранения

  • Приложение не видит нужную версию Java: проверьте which java, java --version и значение JAVA_HOME.
  • alternatives показывает неверный путь: убедитесь, что путь, зарегистрированный через alternatives, существует и содержит исполняемые файлы (java, javac).
  • Неверные права доступа в /usr/lib/jvm: файлы JDK должны быть читаемы для пользователей, запускающих приложения.
  • Запуск приложений через systemd не использует /etc/profile.d: для сервисов systemd переменные окружения нужно определять в unit-файле (опция Environment= или EnvironmentFile=).

Пример добавления JAVA_HOME в systemd unit:

[Service]
Environment=JAVA_HOME=/usr/lib/jvm/jdk-11.0.10
Environment=PATH=%JAVA_HOME%/bin:/usr/bin

После правки юнита выполните:

systemctl daemon-reload

systemctl restart your-service

Альтернативные подходы и инструменты

  • SDKMAN! — менеджер версий для JDK, удобен для разработчиков. Работает на уровне пользователя и позволяет быстро переключаться между дистрибутивами Java.
  • Контейнеры (Docker) — в CI/CD удобно использовать контейнеры с нужной версией JDK для изоляции окружения.
  • Сборки от сторонних поставщиков: AdoptOpenJDK (теперь Adoptium), Azul Zulu, Amazon Corretto. Они предоставляют стабильные бинарные сборки OpenJDK.

Когда ручная установка предпочтительнее репозитория:

  • Нужна конкретная сборка, отсутствующая в репозиториях.
  • Требуется экспериментальная или новейшая версия.
  • Нет желания полагаться на системные репозитории.

Когда лучше использовать репозиторий:

  • Для рабочих серверов предпочтительны пакеты из репозиториев, так как они получают обновления безопасности через пакетный менеджер.

Чек-листы (роль: DevOps / разработчик)

Чек-лист для DevOps:

  • Обновил репозитории перед установкой.
  • Установил JDK через dnf или положил вручную в /usr/lib/jvm.
  • Зарегистрировал альтернативы и выбрал дефолтную версию.
  • Настроил JAVA_HOME в /etc/profile.d для системной установки.
  • Добавил переменные в systemd unit при необходимости.
  • Проверил права доступа к файлам JDK.
  • Документировал выбранную версию и путь в конфигурации окружения.

Чек-лист для разработчика:

  • Убедился, что локальная версия JDK совпадает с билдами CI.
  • Использую SDKMAN! или проектные скрипты для унификации версий на рабочих станциях.
  • Проверил, что PATH указывает на корректную java/bin.

Тесты и критерии приёмки

Критерии приёмки установки Java на сервере:

  • java --version возвращает ожидаемую версию.
  • javac --version возвращает версию компилятора, соответствующую JDK.
  • Переменная JAVA_HOME указывает на существующий каталог JDK.
  • Сервис systemd (если использовался) стартует и использует выбранную JDK.

Простейшие тесты:

  1. Создайте файл HelloWorld.java и скомпилируйте:
cat > HelloWorld.java <<'EOF'
public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello, Java");
  }
}
EOF

javac HelloWorld.java

java HelloWorld

Ожидаемый вывод: Hello, Java.

Практическое руководство по быстрому откату (rollback)

Если после смены версии возникает проблема, выполните:

  1. Верните альтернативу на предыдущую рабочую версию:
sudo alternatives --config java

sudo alternatives --config javac
  1. Верните/обновите systemd unit, если он был изменён, и перезагрузите сервис:
systemctl daemon-reload

systemctl restart your-service
  1. Если изменения в /etc/profile.d были ошибочными, удалите или исправьте файл и выполните source либо перезагрузите систему.

Ментальные модели и рекомендации

  • Разделяйте окружения: используйте разные версии Java для разработки, тестирования и продакшена при необходимости.
  • Предпочитайте LTS-версии (например, Java 8, 11, 17) для критичных систем, если нет нужды в новых возможностях.
  • Для локальной разработки удобны менеджеры версий (SDKMAN!), для серверов — пакеты из репозитория и автоматические обновления через dnf.

Быстрая памятка команд (cheat sheet)

  • Обновление системы: sudo dnf update
  • Поиск OpenJDK в репозитории: dnf search openjdk
  • Установка Java 11: sudo dnf install java-11-openjdk java-11-openjdk-devel
  • Установка Java 8: sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  • Установка вручную: распаковка и mv в /usr/lib/jvm, затем alternatives --install
  • Смена дефолтной java: sudo alternatives --config java
  • Проверка: java --version и javac --version
  • Настройка JAVA_HOME системно: создать /etc/profile.d/java.sh и source его

Когда этот подход не подойдёт

  • Если ваши приложения зависят от коммерческих сборок Oracle JDK с поддержкой и патчами от производителя.
  • Если политика компании запрещает использовать пакеты из внешних источников или ручные установки без аудита.

Краткое резюме

Поздравляем — вы установили и настроили OpenJDK на Rocky Linux. Теперь вы можете:

  • Устанавливать несколько версий Java параллельно.
  • Переключать активную версию через alternatives.
  • Настроить JAVA_HOME системно и для пользователей.

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

Важные заметки

  • Сервисы systemd не читают /etc/profile.d автоматически; используйте Environment в unit-файлах.
  • При ручной установке соблюдайте права доступа и структуру директорий.

Если нужно, могу подготовить готовый systemd unit с конфигурацией JAVA_HOME для конкретного сервиса, или написать Ansible-плейбук для автоматической установки нужной версии OpenJDK на множестве серверов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро