Установка Java с помощью apt в Ubuntu 20.04

Java и JVM (Java virtual machine) – очень широко распространённые и востребованные программы (к примеру, они необходимы для работы TomcatJettyGlassfishCassandra и Jenkins).

Этот мануал научит устанавливать различные версии Java Runtime Environment (JRE) и Java Developer Kit (JDK) с помощью пакетного менеджера apt. Вы установите OpenJDK, а также официальные пакеты JDK от Oracle. После этого вы сможете использовать JDK для разработки или Java Runtime для запуска программного обеспечения.

Требования

Для работы вам нужен сервер Ubuntu 20.04, настроенный согласно этому мануалу.

Установка стандартной версии JRE/JDK

Стандартная версия Java, которая поставляется вместе с Ubuntu – самая простая в установке. По умолчанию Ubuntu 20.04 идет с Open JDK 11 (это открытая версия JRE и JDK).

Чтобы установить эту версию, сначала обновите индекс пакетов:

sudo apt update

А затем запросите версию Java (чтобы узнать, установлена ли Java в данной системе):

java -version

Если на вашем сервере Java не установлена, вы увидите такой вывод:

Command 'java' not found, but can be installed with:
sudo apt install default-jre              # version 2:1.11-72, or
sudo apt install openjdk-11-jre-headless  # version 11.0.7+10-3ubuntu1
sudo apt install openjdk-13-jre-headless  # version 13.0.3+3-1ubuntu2
sudo apt install openjdk-14-jre-headless  # version 14.0.1+7-1ubuntu1
sudo apt install openjdk-8-jre-headless   # version 8u252-b09-1ubuntu1

Выполните следующую команду, чтобы установить стандартную версию Java Runtime Environment (JRE):

sudo apt install default-jre

Данная команда установит Java Runtime Environment (JRE), что позволит вам запускать почти все программы Java.

Запросите версию установленной программы:

java -version

Вы увидите такой вывод:

openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)

Кроме JRE вам может понадобиться Java Development Kit (JDK), чтобы скомпилировать и запустить определенное программное обеспечение на базе Java. Чтобы установить JDK, выполните следующую команду:

sudo apt install default-jdk

Убедитесь, что версия JDK установлена, проверив версию javac, компилятора Java:

javac -version

Вы увидите следующий результат:

javac 11.0.7

Установка Oracle JDK 11

Лицензионное соглашение Oracle для Java не доступно через стандартный менеджер пакетов. Чтобы установить Oracle JDK, официальную версию от Oracle, нужно создать аккаунт Oracle и вручную загрузить JDK, чтобы добавить новый репозиторий для нужной вам версии. После этого вы сможете установить ее с помощью apt и стороннего скрипта.

Версия Oracle JDK, которую вам нужно загрузить, должна соответствовать версии инсталлятора. Чтобы узнать, какая версия вам нужна, посетите страницу oracle-java11-installer. Найдите пакет для Focal.

В мануале используется версия скрипта 11.0.7. В этом случае вам понадобится Oracle JDK 11.0.7. С этой страницы не нужно ничего скачивать.

Затем перейдите на страницу загрузок и найдите версию, которая вам нужна.

Нажмите кнопку JDK Download, и вы попадете на экран, где будут перечислены доступные версии. Нажмите на пакет .tar.gz для Linux.

Вы увидите диалоговое окно с просьбой принять лицензионное соглашение Oracle. Установите флажок, чтобы принять лицензионное соглашение, и нажмите кнопку Download. Возможно, вам придется войти в свою учетную запись Oracle еще раз, чтобы начать загрузку.

Как только файл загрузится, вам нужно будет перенести его на ваш сервер. Загрузите файл на свой локальный компьютер. В macOS, Linux или Windows (с помощью подсистемы Windows для Linux) используйте команду scp, чтобы передать файл в домашний каталог вашего пользователя 8host. Следующая команда предполагает, что вы сохранили файл Oracle JDK в папке Downloads на локальном компьютере (если это не так, исправьте путь в команде):

scp Downloads/jdk-11.0.7_linux-x64_bin.tar.gz 8host@your_server_ip:~

Теперь у вас на сервере есть правильный пакет программного обеспечения Java. Можно добавить репозиторий, в котором находится нужный нам инсталлятор.

Сначала установите пакет software-properties-common, который добавляет команду apt-get-repository – она нужна для добавления в систему дополнительных репозиториев.

sudo apt install software-properties-common

После этого нужно импортировать ключ подписи, чтобы проверить программу, которую мы собираемся установить:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

Вы увидите такой результат:

gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg:               imported: 1

С помощью команды add-apt-repository добавьте нужный репозиторий в список источников:

sudo add-apt-repository ppa:linuxuprising/java

После этого вы увидите сообщение:

Oracle Java 11 (LTS) and 12 installer for Ubuntu, Linux Mint and Debian.
Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java 11, so a working Internet connection is required.
The packages in this PPA are based on the WebUpd8 Oracle Java PPA packages: https://launchpad.net/~webupd8team/+archive/ubuntu/java
Created for users of https://www.linuxuprising.com/
Installation instructions (with some tips), feedback, suggestions, bug reports etc.:
. . .
Press [ENTER] to continue or ctrl-c to cancel adding it

Нажмите Enter, чтобы продолжить установку. Затем система попробует импортировать ключи GPG, но не сможет найти валидные.

no valid OpenPGP data found

Это предупреждение можно проигнорировать.

Чтобы обновить список исходников и сделать новое ПО доступным для установки, введите:

sudo apt update

Инсталлятор будет искать загруженный пакет Oracle JDK в каталоге /var/cache/oracle-jdk11-installer-local. Сейчас нужно создать этот каталоги и скопировать туда архив .tar.gz.

sudo mkdir -p /var/cache/oracle-jdk11-installer-local/
sudo cp jdk-11.0.7_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

Теперь можно установить пакет:

sudo apt install oracle-java11-installer-local

Сначала инсталлятор предложит вам принять лицензию. После этого он извлечет и установит Java.

Управление Java

На одном сервере может одновременно находиться несколько экземпляров Java. Вы можете выбрать версию Java, которая будет использоваться системой по умолчанию. Для этого существует команда update-alternatives.

sudo update-alternatives --config java

Команда вернёт примерно следующий вывод (в данном случае показан вывод команды после установки всех вышеперечисленных версий Java):

There are 2 choices for the alternative java (providing /usr/bin/java).
Selection    Path                                         Priority   Status
------------------------------------------------------------
0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode
Press <enter> to keep the current choice[*], or type selection number:

Теперь выберите номер версии, которая будет использоваться по умолчанию, и нажмите Enter. Таким же образом можно настроить и другие команды Java, например, компилятор (javac).

sudo update-alternatives --config javac

Также эта команда работает для keytool, javadoc, jarsigner и т.п.

Переменная среды JAVA_HOME

Многие программы используют переменную среды JAVA_HOME, чтобы определить расположение установки Java.

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

sudo update-alternatives --config java

Команда покажет все установки Java и их пути:

There are 2 choices for the alternative java (providing /usr/bin/java).
Selection    Path                                         Priority   Status
------------------------------------------------------------
0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode
Press <enter> to keep the current choice[*], or type selection number:

В данном случае у установок такие пути:

  • Oracle Java: /usr/lib/jvm/java-11-oracle/jre/bin/java.
  • OpenJDK 11: /usr/lib/jvm/java-11-openjdk-amd64/bin/java.

Скопируйте путь необходимой вам версии и откройте /etc/environment в текстовом редакторе:

sudo nano /etc/environment

Добавьте следующую строку в конец этого файла (замените условный путь к программе только что скопированным путём):

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

При изменении файла путь JAVA_HOME будет установлен для всех пользователей данной системы.

Сохраните и закройте файл. Чтобы обновить настройки, введите:

source /etc/environment

Убедитесь, что переменная среды установлена верно. Для этого введите:

echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64

Команда должна вернуть путь к версии, который вы только что установили.

Заключение

Теперь вы знаете, как установить несколько версий Java и выбрать версию по умолчанию. Сейчас вы можете установить  несколько программ, основанных на Java, например, Tomcat, Jetty, Glassfish, Cassandra или Jenkins

Tags: , , , , , , ,