Невозможно установить JRE и JDK на Calculate 12

Установщик для oracle-jre-bin и sun-jdk пишет:

Но этих файлов там уже нет. Там более новые версии, но даже если скачать эти файлы (по ссылкам в интернете нашёл), то они тоже не подходят. Не проходят проверку и cheksumm failure.

Дальше установщиком предлагается вот это:

Due to Oracle no longer providing the distro-friendly DLJ bundles, the package
* has become fetch restricted again. Alternatives are switching to
* dev-java/icedtea-bin:6 or the source-based dev-java/icedtea:6

Этот заработал: java -version
java version “1.6.0_24”
OpenJDK Runtime Environment (IcedTea6 1.11.3) (Gentoo build 1.6.0_24-b24)
OpenJDK Client VM (build 20.0-b12, mixed mode)

Если две вышеупомянутые реализации нерабочие, зачем включать такие ебилды в дистрибутив? Просто чтоб были что-ли? Или дайте тогда ссылки на существующие версии…

Ебилды содержатся в дереве Gentoo. Спасибо мейнтейнерам, что пытаются хотя бы как-то контролировать ад Oracle.

Oracle как хочет так и вертит, они например могут без проблем и предупреждений изменить размер бинарника не изменив версии по той же ссылке. В чем вы убедились по cheksumm failure. Так что можете написать гневное письмо самому Oracle’у, хотя, по неподтвержденным данным это не помогает. Джеймс Гослинг гарантирует.

Баг описан здесь: https://bugs.gentoo.org/show_bug.cgi?id=426940

Решение в вашем случае устанавливать джаву теми бинарниками, которые вы “достали” через самые свежие ебилды,
например по 6-у JDK, это dev-java/sun-jdk-1.6.0.33-r2 --> там размер бинарника исправлен.
По 7-й джаве та же история.
Удачи!

В любом случае, чтобы не зависеть ни от кого, от Oracle, мейнтейнеров дерева Portage и так далее, можно в течении 1-2х минут установить свежайшую актуальную версию Java.

1. Скачиваем Java установщики в distfiles:

sudo wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" "http://download.oracle.com/otn-pub/java/jdk/7u5-b05/jre-7u5-linux-i586.tar.gz" -P /var/calculate/remote/distfiles/

sudo wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F" "http://download.oracle.com/otn-pub/java/jdk/6u33-b03/jdk-6u33-linux-i586.bin" -P /var/calculate/remote/distfiles/

2. Вычисляем размер и checksum’s:

ls -l /var/calculate/remote/distfiles/jre-7u5-linux-i586.tar.gz

получаем: 1 root root 34374207 May 17 00:31 /var/calculate/remote/distfiles/jre-7u5-linux-i586.tar.gz

ls -l /var/calculate/remote/distfiles/jdk-6u33-linux-i586.bin

получаем: 1 root portage 71748499 May 17 00:23 /var/calculate/remote/distfiles/jdk-6u33-linux-i586.bin

sha256sum /var/calculate/remote/distfiles/jre-7u5-linux-i586.tar.gz

получаем: 61e23f37f2fcdbc0f28755dc4692a810bbd10c67794145f37dfedf658afc9e29

sha256sum /var/calculate/remote/distfiles/jdk-6u33-linux-i586.bin

получаем: 2acb931d0cb455dbae3f6b11d394dd7e5758e6499abc1a7c50909e72cfb67fa7

3. Изменяем Manifest для установки через Portage, на примере dev-java/oracle-jre-bin-1.7.0.5-r2:

sudo nano /usr/portage/dev-java/oracle-jre-bin/Manifest

удаляем всё, что после строчки DIST jre-7u5-linux-i586.tar.gz , и подставляем данные полученные ранее, т.е. строка в Manifest должна выглядеть так:

DIST jre-7u5-linux-i586.tar.gz 34374207 SHA256 61e23f37f2fcdbc0f28755dc4692a810bbd10c67794145f37dfedf658afc9e29

сохраняем файл Ctrl+O, выходим Ctrl+X.

Всё, dev-java/oracle-jre-bin-1.7.0.5-r2 к установке готов.

Результат —> все самые свежие версии Java установлены независимо от погоды:

2 brother appsee
А не проще ли вместо второго и третьего пункта - просто удалить эти файлы из distfiles(если они есть), как и записи об этих файлах из Manifest, и пересоздать эти самые записи командой:
ebuild /usr/portage/dev/java/${PN}/${P} digest
Насколько я понимаю - если файлов нет, ebuild полезет за ними на SRC_URI, положит их куда надо, и вычислит контрольные суммы сам.

2 Михаил Гагауз

В таком случае нужно править ебилд и вставлять опцию скачивания wget’ом указанную выше с обманом куки оракловского сайта - т.к. oracle’вские продукты уже не distro-friendly и не прокатывает ACCEPT_LICENSE="*" как это было год назад, например. Т.е. dev-java/sun-jdk - fetch restricted (must be manually downloaded). Так что мне кажется поправить манифест проще.

2 brother appsee
хмм… моя ошибка - в ebuild не глянул.
Но в любом случае - если скачать файлы в distfiles, и удалить записи о них из Manifest, после команды
ebuild /usr/portage/dev-java/oracle-jre-bin/oracle-jre-bin-1.7.0.5-r2.ebuild digest
в Manifest пропишутся сразу все необходимые контрольные суммы.

PS
Странно как оно вообще все работает, у меня в Manifest ни один ebuild не прописан

$ cut -f1,2 -d\  /usr/portage/dev-java/oracle-jre-bin/Manifest
DIST UnlimitedJCEPolicyJDK7.zip
DIST jre-7u5-linux-i586.tar.gz
DIST jre-7u5-linux-x64.tar.gz
$ cut -f1,2 -d\  /usr/portage/dev-java/sun-jdk/Manifest 
DIST jdk-6u33-linux-i586-demos.tar.gz
DIST jdk-6u33-linux-i586.bin
DIST jdk-6u33-linux-ia64-demos.tar.gz
DIST jdk-6u33-linux-ia64.bin
DIST jdk-6u33-linux-x64-demos.tar.gz
DIST jdk-6u33-linux-x64.bin
DIST jdk-6u33-solaris-i586-demos.tar.Z
DIST jdk-6u33-solaris-i586.sh
DIST jdk-6u33-solaris-sparc-demos.tar.Z
DIST jdk-6u33-solaris-sparc.sh
DIST jdk-6u33-solaris-sparcv9-demos.tar.Z
DIST jdk-6u33-solaris-sparcv9.sh
DIST jdk-6u33-solaris-x64-demos.tar.Z
DIST jdk-6u33-solaris-x64.sh