Java/OracleSDK: различия между версиями

Материал из ALT Linux Wiki
м (→‎NOSRC In a Nutshell: [http://www.linux.kiev.ua/ru/news/comments/view/3755/ ftp.linux.kiev.ua down])
м (+кат; +note)
 
(не показана 31 промежуточная версия 9 участников)
Строка 1: Строка 1:
[[Категория:Sisyphus]]
[[Категория:Sisyphus]]
== Установка Oracle Java 6/7 SDK в ALTLinux ==
== Установка Oracle Java 8 SDK в ALT Linux ==
'''Обратите внимание: Java 7/6 доступны [http://www.oracle.com/technetwork/java/javase/documentation/eol-135779.html только по подписке], при наличии архива процедура аналогична'''


{{note|Рекомендуем рассмотреть [[Java/LibericaJDK|Liberica JDK]] в качестве более разумной альтернативы продукции Oracle с санкциями впридачу (доступны сборки под ALT)}}


__TOC__
__TOC__
Строка 14: Строка 16:
Последующие версии Oracle JDK теперь распространяются под лицензией Oracle Binary Code License,
Последующие версии Oracle JDK теперь распространяются под лицензией Oracle Binary Code License,
в которой есть явное разрешение распространять JDK вместе с java приложениями, например, в составе LiveCD,
в которой есть явное разрешение распространять JDK вместе с java приложениями, например, в составе LiveCD,
но нет явного разрешения распространять JDK в одиночку, как отдельный пакет.
но нет явного разрешения распространять JDK в одиночку как отдельный пакет.
Поэтому их нет в сизифе.
Поэтому их нет в сизифе.


Однако ничто не мещает установить данные пакеты самостоятельно.
Однако ничто не мешает установить данные пакеты самостоятельно.
Для безболезненной установки Oracle JDK под ALTLinux доступны .nosrc.rpm пакеты.
Для безболезненной установки Oracle JDK под ALT Linux доступны nosrc.rpm-пакеты.
В эти .nosrc.rpm пакеты собственно Oracle JDK не входит, его нужно отдельно скачать,
В них собственно Oracle JDK не входит, его нужно отдельно скачать,
после чего их можно пересобрать по инструкции ниже и получить обычные rpm пакеты,
после чего их можно пересобрать по инструкции ниже и получить обычные rpm-пакеты,
готовые к установке.
готовые к установке.
C 19 апреля 2019 года лицензионная политика снова поменялась, теперь Oracle JDK платная, последний релиз,
который можно собрать и пользоваться без ограничений это 8u202 (скачать после авторизации на сайте можно [https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html тут])


=== NOSRC In a Nutshell ===
=== NOSRC In a Nutshell ===


Скачайте с
{{attention|Все действия этой инструкции проводим под пользователем.}}
http://fly.osdn.org.ua/~mike/packages/java/java-1.7.0-oracle/ (для Oracle JDK 7)
 
либо с
Скачайте [http://ftp.altlinux.org/pub/people/mike/packages/java/ соответствующий пакет] {{path|*.nosrc.rpm}}; например: [http://ftp.altlinux.org/pub/people/mike/packages/java/java-1.8.0-oracle-1.8.0.102-alt1.nosrc.rpm java-1.8.0-oracle-1.8.0.102-alt1.nosrc.rpm].
http://fly.osdn.org.ua/~mike/packages/java/java-1.6.0-oracle/ (для Oracle JDK 6)
 
соответствующий .nosrc.rpm пакет.
Установите его командой вида:
Например, http://fly.osdn.org.ua/~mike/packages/java/java-1.7.0-oracle/java-1.7.0-oracle-1.7.0.21-alt1.nosrc.rpm
 
$ rpm -Uhv java-1.8.0-oracle-1.8.0.102-alt1.nosrc.rpm
 
После выполнения команды у вас появится новый каталог {{path|/home/''UserName''/RPM/}}, в нём будет еще два каталога: {{path|SOURCES}} и {{path|SPECS}}


Установите его командой вида
Скачайте в каталог {{path|SOURCES/}} недостающий исходник {{path|jdk*.tar.gz}} для вашей архитектуры с сайта Oracle ([http://www.oracle.com/technetwork/java/javase/downloads/index.html Java SE Downloads],
rpm -i java-1.7.0-oracle-1.7.0.21-alt1.nosrc.rpm
Скачайте в папку {{path|SOURCES/}} недостающий исходник для вашей архитектуры с  
сайта Oracle
[http://www.oracle.com/technetwork/java/javase/downloads/index.html Java SE Downloads],
[http://www.oracle.com/technetwork/java/javase/downloads/index.html download.oracle.com],
[http://www.oracle.com/technetwork/java/javase/downloads/index.html download.oracle.com],
если ссылки устареют, поищите новые в google.
если ссылки устареют, поищите новые в 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


Например, для java-1.7.0-oracle-1.7.0.3 это будут файл
<!--
* (i586) http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-i586.tar.gz
* (x86_64) http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz


(i586) http://download.oracle.com/otn-pub/java/jdk/7u3-b04/jdk-7u3-linux-i586.tar.gz
Для java-1.7.0-oracle-1.7.0.21 это будут файлы {{pkg|jdk-7u21-linux-i586.tar.gz}} и {{pkg|jdk-7u21-linux-x64.tar.gz}} соответственно.
-->
Публикация nosrc.rpm может отставать от выпуска новых релизов java.


(x86_64) http://download.oracle.com/otn-pub/java/jdk/7u3-b04/jdk-7u3-linux-x64.tar.gz
Если на сайте Oracle доступна более свежая версия,
чем имеющиеся {{path|*.nosrc.rpm}}, необходимо внести поправки в файле {{path|java-1.8.0-oracle.spec}}
и только после этого приступать к сборке {{path|*.src.rpm}}.


Для java-1.7.0-oracle-1.7.0.21 это будут файлы {{pkg|jdk-7u21-linux-i586.tar.gz}} и {{pkg|jdk-7u21-linux-x64.tar.gz}}.
К примеру: У вас в файле {{path|java-1.8.0-oracle.nosrc.rpm}} в строке <tt>%define buildver</tt> указана версия 60, а на оф.сайте уже доступна версия {{path|jdk-8u72-linux-**.tar.gz}};
править нужно следующее: ( "-" - это строка для изменения, "+" - та же строка, но уже с внесенными изменениями)


Публикация nosrc.rpm может отставать от выпуска новых релизов java.
Если случилось так, что  на сайте Oracle доступна более свежая версия,
чем имеющиеся nosrc.rpm, тогда можно просто обновить версию пакета в файле java-1.7.0-oracle.spec,
затем собрать src.rpm по инструкции. Внизу дан пример правки spec файла.
<source lang="diff">
<source lang="diff">
--- a/java-1.7.0-oracle.spec
--- java-1.8.0-oracle.spec~    2016-02-04 17:31:58.832448223 +0300
+++ b/java-1.7.0-oracle.spec
+++ java-1.8.0-oracle.spec     2016-02-04 17:02:50.865717944 +0300
@@ -38,7 +38,7 @@
@@ -38,7 +38,7 @@
  %define origin          oracle
  %define origin          oracle
  %define priority        16040
  %define priority        18040
  %define javaver        %major.%minor
  %define javaver        %major.%minor
-%define buildver        17
-%define buildver        60
+%define buildver        21
+%define buildver        72
   
   
  %define jppname        java-%{javaver}-%{origin}
  %define jppname        java-%{javaver}-%{origin}
  %define javaws_ver      %{javaver}
  %define javaws_ver      %{javaver}
@@ -989,6 +989,9 @@ done
@@ -1107,6 +1107,9 @@
   
   
   
   
  %changelog
  %changelog
+* Mon Apr 22 2013 Igor Vlasenko <viy@altlinux.ru> 0:1.7.0.21-alt1
+* Thu Feb 04 2016 Michael Shigorin <mike@altlinux.org> 0:1.8.0.72-alt1
+- nosrc spec file for java sdk 7u21
+- nosrc spec file for java sdk 8u72
+
+
  * Fri Mar 08 2013 Igor Vlasenko <viy@altlinux.ru> 0:1.7.0.17-alt1
  * Fri Oct 09 2015 Igor Vlasenko <viy@altlinux.ru> 0:1.8.0.60-alt1
  - nosrc spec file for java sdk 7u17
  - nosrc spec file for java sdk 8u60
</source>
</source>


Установите в host-систему пакет rpm-build-java.
Обновить nosrc.rpm при желании можно подобным образом:
Зайдите в папку {{path|SPECS/}}, поправьте при необходимости версию в spec-файле,
и выполните команду (для Oracle JDK 7):
rpmbuild -bs --nodeps java-1.7.0-oracle.spec
Полученный в результате  java-1.7.0-oracle-1.7.0.21-alt1.src.rpm пересоберите в hasher.


Примечание: ключ --nodeps команды rpmbuild -bs позволяет выполнить ее без установки
rpmbuild -bs --nosource 0 --nosource 1 --nodeps java-1.8.0-oracle.spec
лишних зависимостей в хост-систему. При этом, если в хост-системе не будет некоторых дополнительных
 
Далее установите в host-систему пакеты {{pkg|rpm-build-java}} {{pkg|browser-plugins-npapi-devel}} и в каталоге {{path|SPECS/}} выполните команду (для Oracle JDK 8):
 
  $ rpmbuild -bs --nodeps java-1.8.0-oracle.spec
 
Полученный в результате {{path|java-1.8.0-oracle-1.8.0.102-alt1.src.rpm}} [[Hasher/Краткое руководство|пересоберите в hasher]].
 
=== Примечания ===
 
; ключ " --nodeps " команды "rpmbuild -bs" позволяет выполнить ее без установки лишних зависимостей в хост-систему.
При этом, если в хост-системе не будет некоторых дополнительных
пакетов с макросами, именно, указанных в BuildRequires(pre): {{pkg|rpm-macros-alternatives browser-plugins-npapi-devel}},
пакетов с макросами, именно, указанных в BuildRequires(pre): {{pkg|rpm-macros-alternatives browser-plugins-npapi-devel}},
то rpmbuild будет выдавать предупреждения, связанные с отсутствием соответствующих макросов.
то rpmbuild будет выдавать предупреждения, связанные с отсутствием соответствующих макросов.
На это можно не обращать внимания, если сборка src.rpm пакета состоялась.
На это можно не обращать внимания, если сборка src.rpm пакета состоялась.
; Если вы не осилили сборку в hasher, то надо делать так:
<source lang=text>
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
</source>
При этом в систему установятся пакеты, необходимые для сборки пакета. После сборки, их можно удалить из системы.
; В последней версии java-1.8.0-oracle.spec для JDK 8u45 (arch type i586), надо запретить сборку moz_plugin_classiс для 32-битной архитектуры (как уже сделано для 64-бит)
<source lang=diff>
@@ -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
</source>
=== Ссылки ===
[[Сборка_пакета_с_нуля]]
[[Hasher]]
=== Переключение на 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
[[Категория:Java]]

Текущая версия от 13:05, 13 октября 2020

Установка Oracle Java 8 SDK в ALT Linux

Обратите внимание: Java 7/6 доступны только по подписке, при наличии архива процедура аналогична

Примечание: Рекомендуем рассмотреть Liberica JDK в качестве более разумной альтернативы продукции Oracle с санкциями впридачу (доступны сборки под ALT)


Лицензионные ограничения

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 это будет файл:

Публикация 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

Ссылки

Сборка_пакета_с_нуля

Hasher


Переключение на 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