Java/OracleSDK
Установка Oracle Java 8 SDK в ALT Linux
Обратите внимание: Java 7/6 доступны только по подписке, при наличии архива процедура аналогична
Лицензионные ограничения
jdk-6u26-linux является последним фирменным JDK, распространяемым под лицензией DLJ (Operating System Distributor License for Java version 1.1). Эта лицензия явно разрешает распространять JDK в составе дистрибутива. Таким образом, java-1.6.0-sun-1.6.0.26 является последним JDK от Sun/Oracle, входящим в состав Sisyphus.
Последующие версии Oracle JDK теперь распространяются под лицензией Oracle Binary Code License, в которой есть явное разрешение распространять JDK вместе с java приложениями, например, в составе LiveCD, но нет явного разрешения распространять JDK в одиночку как отдельный пакет. Поэтому их нет в сизифе.
Однако ничто не мешает установить данные пакеты самостоятельно. Для безболезненной установки Oracle JDK под ALT Linux доступны nosrc.rpm-пакеты. В них собственно Oracle JDK не входит, его нужно отдельно скачать, после чего их можно пересобрать по инструкции ниже и получить обычные rpm-пакеты, готовые к установке.
C 19 апреля 2019 года лицензионная политика снова поменялась, теперь Oracle JDK платная, последний релиз, который можно собрать и пользоваться без ограничений это 8u202 (скачать после авторизации на сайте можно тут)
NOSRC In a Nutshell
Скачайте соответствующий пакет *.nosrc.rpm; например: java-1.8.0-oracle-1.8.0.102-alt1.nosrc.rpm.
Установите его командой вида:
$ rpm -Uhv java-1.8.0-oracle-1.8.0.102-alt1.nosrc.rpm
После выполнения команды у вас появится новый каталог /home/UserName/RPM/, в нём будет еще два каталога: SOURCES и SPECS
Скачайте в каталог SOURCES/ недостающий исходник jdk*.tar.gz для вашей архитектуры с сайта Oracle (Java SE Downloads, download.oracle.com, если ссылки устареют, поищите новые в google).
Например, для java-1.8.0-oracle-1.8.0.102 это будет файл:
- (x86_64) http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.tar.gz
- (i586) http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-i586.tar.gz
Публикация nosrc.rpm может отставать от выпуска новых релизов java.
Если на сайте Oracle доступна более свежая версия, чем имеющиеся *.nosrc.rpm, необходимо внести поправки в файле java-1.8.0-oracle.spec и только после этого приступать к сборке *.src.rpm.
К примеру: У вас в файле java-1.8.0-oracle.nosrc.rpm в строке %define buildver указана версия 60, а на оф.сайте уже доступна версия jdk-8u72-linux-**.tar.gz; править нужно следующее: ( "-" - это строка для изменения, "+" - та же строка, но уже с внесенными изменениями)
--- java-1.8.0-oracle.spec~ 2016-02-04 17:31:58.832448223 +0300
+++ java-1.8.0-oracle.spec 2016-02-04 17:02:50.865717944 +0300
@@ -38,7 +38,7 @@
%define origin oracle
%define priority 18040
%define javaver %major.%minor
-%define buildver 60
+%define buildver 72
%define jppname java-%{javaver}-%{origin}
%define javaws_ver %{javaver}
@@ -1107,6 +1107,9 @@
%changelog
+* Thu Feb 04 2016 Michael Shigorin <mike@altlinux.org> 0:1.8.0.72-alt1
+- nosrc spec file for java sdk 8u72
+
* Fri Oct 09 2015 Igor Vlasenko <viy@altlinux.ru> 0:1.8.0.60-alt1
- nosrc spec file for java sdk 8u60
Обновить nosrc.rpm при желании можно подобным образом:
rpmbuild -bs --nosource 0 --nosource 1 --nodeps java-1.8.0-oracle.spec
Далее установите в host-систему пакеты rpm-build-java browser-plugins-npapi-devel и в каталоге SPECS/ выполните команду (для Oracle JDK 8):
$ rpmbuild -bs --nodeps java-1.8.0-oracle.spec
Полученный в результате java-1.8.0-oracle-1.8.0.102-alt1.src.rpm пересоберите в hasher.
Примечания
- ключ " --nodeps " команды "rpmbuild -bs" позволяет выполнить ее без установки лишних зависимостей в хост-систему.
При этом, если в хост-системе не будет некоторых дополнительных пакетов с макросами, именно, указанных в BuildRequires(pre): rpm-macros-alternatives browser-plugins-npapi-devel, то rpmbuild будет выдавать предупреждения, связанные с отсутствием соответствующих макросов. На это можно не обращать внимания, если сборка src.rpm пакета состоялась.
- Если вы не осилили сборку в hasher, то надо делать так
cd /home/user/RPM/SPEC
rpmbuild -bs --nodeps java-1.8.0-oracle.spec
cd /home/user/RPM/SRPMS
apt-get build-dep путь_до_файла/java-1.8.0-oracle-1.8.0.31-alt1.src.rpm
cd /home/user/RPM/SPEC
rpmbuild -bs java-1.8.0-oracle.spec
При этом в систему установятся пакеты, необходимые для сборки пакета. После сборки, их можно удалить из системы.
- В последней версии java-1.8.0-oracle.spec для JDK 8u45 (arch type i586), надо запретить сборку moz_plugin_classiс для 32-битной архитектуры (как уже сделано для 64-бит)
@@ -84,7 +84,7
%else
%def_enable javaws
%def_enable moz_plugin
-%def_enable moz_plugin_classic
+%def_disable moz_plugin_classic
%def_enable desktop
%endif
%def_with gcc32_abi
Ссылки
Переключение на Oracle JDK
https://www.altlinux.org/Java/OracleSDK/Install
TODO: использование alternatives
Вопрос: как при выполнении rpmbuild -bs --nodeps java-1.8.0-oracle.spec на выходе получить упакованный пакет с сорцами i586 при сборке на платформе x86_64. Упаковывается всё x64.tar.gz