Замість завантаження Java JDK в Linux через wget відображається сторінка ліцензії


615

Коли я намагаюся завантажити Java з Oracle, я замість цього завантажую сторінку, в якій говориться, що мені потрібно погодитися з умовами ліцензії OTN.

Вибачте!

Щоб завантажити продукти з технологічної мережі Oracle, ви повинні погодитися з умовами ліцензії OTN.

Будьте впевнені, що ...

  • У вашому браузері ввімкнено "cookie" та JavaScript.
  • Ви натиснули "Прийняти ліцензію" для продукту, який ви хочете завантажити.
  • Ви намагаєтесь завантажити протягом 30 хвилин після прийняття ліцензії.

Як я можу завантажити та встановити Java?


Це питання є тематичним, оскільки стосується того, як розробники встановлюють комплекти розробок. Повторно відкривши її з цієї причини.
Джордж Стокер

Відповіді:


1657

ОНОВЛЕНО ДЛЯ Oracle JDK 11

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gz

ОНОВЛЕНО ДЛЯ JDK 10.0.2

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.tar.gz

ОНОВЛЕНО ДЛЯ JDK 10.0.1

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8c52526dc134031e/jdk-10.0.1_linux-x64_bin.tar.gz

ОНОВЛЕНО ДЛЯ JDK 9, схоже, ви можете завантажити його зараз безпосередньо з java.net, не надсилаючи заголовок

wget http://download.java.net/java/GA/jdk9/9/binaries/jdk-9+181_linux-x64_bin.tar.gz

ОНОВЛЕНО ДЛЯ JDK 8u191

TAR GZ:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3a%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8-downloads-2133151.html; oraclelicense=accept-securebackup-cookie;" "https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz"

RPM:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3a%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8-downloads-2133151.html; oraclelicense=accept-securebackup-cookie;" "https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm"

ОНОВЛЕНО ДЛЯ JDK 8u131

RPM:

  wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

TAR GZ:

 wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

RPM з використанням curl:

 curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm > jdk-8u112-linux-x64.rpm

У всіх випадках вище, замініть 'i586' для 'x64', щоб завантажити 32-бітну збірку.

  • -j -> непотрібне печиво
  • -k -> ігнорувати сертифікати
  • -L -> слідувати переадресації
  • -H [arg] -> заголовки

curlможна використовувати замість wget.

ОНОВЛЕННЯ ДЛЯ JDK 7u79

TAR GZ:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz

RPM з використанням curl:

curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm > jdk-7u79-linux-x64.rpm

Ще раз переконайтеся, що вказали правильну URL-адресу для завантажуваної версії. Ви можете знайти URL-адресу тут: сайт завантажень Oracle JDK

ОРИГІНАЛЬНИЙ ВІДПОВІДЬ 9 червня 2012 року

Якщо ви хочете завантажити Oracle JDK з командного рядка за допомогою wget, існує рішення. Виконайте wgetкоманду наступним чином:

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz"

Не забудьте замінити посилання на завантаження правильним для версії, яку ви завантажуєте.


6
(Можливо, цей мільйонний репост нарешті зробить трюк. ) Здається, що простий --header "Cookie: oraclelicense=accept-securebackup-cookie"(або --header "Cookie: oraclelicense=[any-character(s)-but-a-single-space]") добре працює. Ви могли б це підтвердити?
Дет

2
Оновлення для нової Java 8 : wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.tar.gz. У --no-печиво надлишкова і --no-чек-сертифікат необхідний тільки з Wget 1.12 і старше, які НЕ вистачає підтримки SAN ( в основному RHEL / CentOS 6.x). Версія CURL така:curl -L -C - -b "oraclelicense=accept-securebackup-cookie" -O http://download.oracle.com/otn-pub/java/jdk/8-b132/jdk-8-linux-x64.tar.gz
Det

3
Я спробував нову 121 версію з URL-адресою download.oracle.com/otn-pub/java/jdk/8u121-b13/…, але, схоже, це не працює. якась думка?
Нам Нгуен

3
Помилка 404: Не знайдено в JDK 11, може бути неправильна URL-адреса?
Tien Dung Tran

2
ОНОВЛЕНО ДЛЯ Oracle JDK 11 рішення більше не працює
bomba

247

( Ірані оновив свою відповідь, але ось, щоб усе прояснити. )

Редагування: оновлено для Java 11.0.1 , випущено 16 жовтня 2018 року

Wget

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz

JRE 8u191 (відсутні файли cookie): http://javadl.oracle.com/webapps/download/AutoDL?BundleId=235717_2787e4a523244c269598db4e85c51e0c
Докладнішу інформацію про завантаження можна знайти в oracle.com та java.com .

  • -c / --continue

    Дозволяє продовжити незавершене завантаження.

  • --header "Cookie: oraclelicense=accept-securebackup-cookie"

    З 15 березня 2014 року цей cookie надається користувачеві після прийняття Ліцензійної угоди та необхідний для доступу до пакетів Java на download.oracle.com . Попередня (і перша) реалізація 27 березня 2012 року використовувала файли cookie gpw_e24=http%3A%2F%2Fwww.oracle.com[...]. Обидва випадки залишаються не оголошеними публікою.

    Значення не повинно бути " accept-securebackup-cookie".

Потрібно для Wget <1,13

  • --no-check-certificate

    Потрібно лише з wget 1.12 і новішими версіями , які не підтримують сертифікати суб'єктної альтернативної імені (SAN) (в основному Red Hat Enterprise Linux 6.x та друзів, таких як CentOS). 1.13 було звільнено у серпні 2011 року.

    Щоб переглянути поточну версію, використовуйте: wget --version | head -1

Не вимагається

  • --no-cookies

    Поєднання --no-cookies --header "Cookie: name=value"згадується як " офіційна " підтримка файлів cookie, але тут суворо не потрібно.

CURL

curl -L -C - -b "oraclelicense=accept-securebackup-cookie" -O http://download.oracle.com/otn-pub/java/jdk/11.0.1+13/90cf5d8f270a4347a95050320eef3fb7/jdk-11.0.1_linux-x64_bin.tar.gz
  • -L / --location

    Потрібно для перенаправлення через усі дзеркала CURL .

  • -C / --continue-at -

    Дивись вище. cURL -в кінці кінців вимагає тире ( ).

  • -b / --cookie "oraclelicense=accept-securebackup-cookie"

    Так само -H / --header "Cookie: ...", як і файли, але також приймає файли.

  • -O

    Необхідний для CURL для збереження файлів (див . Порівняння автора для більше відмінностей).


2
"попередній тире" повинен бути "тире після будь-якої форми опції", але це відмінне підсумок.
Алекс Дюпюй

1
Ну, я змінив це на " cURL вимагає тире ( -) врешті-решт. " Це повинно бути досить зрозумілим, враховуючи те, як інша форма символуflag вже показана в команді.
Дет

1
Я спробував нову версію 121 з URL-адресою download.oracle.com/otn-pub/java/jdk/8u121-b13/…, але, схоже, це не працює. якась думка?
Нам Нгуен

1
Здається, це не працює для старої версії. Я не можу завантажити 8u121. Можливо, через Downloading these releases requires an oracle.com account. Будь-яке вирішення?
ALex_hha

1
Ми використовуємо docker, тому нам потрібно використовувати конкретну версію Java. Так, я можу знайти файл на ftp, але я вже згадав, що відтепер ви не можете завантажити попередню версію з сайту без їх облікового запису
ALex_hha

35

Завантаження Java з командного рядка завжди було клопітким. Те, що я роблю послідовно, - це використовувати FireFox (можуть працювати інші веб-переглядачі), щоб розпочати завантаження на своєму ноутбуці, призупинити його (у вікнах завантажень), використовувати пункт меню «Копіювати посилання завантаження» контекстного меню, що відображається для завантаження файлу. Потім ця URL-адреса може бути використана у вікні Linux для завантаження того ж файлу. Я очікую, що URL-адреса має короткий час для життя. Некрасивий, але в цілому успішний.


Так .. це працює. Приємно. У мене був свій URL, як download.oracle.com/otn-pub/java/jdk/7u9-b05/…
Mukus

3
Це цікава справа, але не дає відповіді на запитання. Клацання на FireFox несумісне з "автоматичним завантаженням".
Стефан Гурішон

Не настільки клопітно (переклад: неможливо), як сьогодні в моїх браузерах (множині). Близько 10–20% шляху входу сервер Oracle відключиться, залишаючи мені усічене завантаження. Інструмент CLI принаймні повторює місце, де він припинився, і врешті-решт один із запусків завершиться без тайм-ауту / відхилення.
Робопрог

чудово! параметр запиту AuthParamпов'язаний із перевіркою Oracle, чи погодився користувач на Ліцензію чи ні.
асгс

єдине рішення, що працює для мене сьогодні. Усі прийоми wget з параметром cookie accept не працювали.
Саад Бенбузід

23

Оновлено для JDK 8u171 об / хв

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm

Застарілі посилання нижче

Оновлено для JDK 8u161 об / хв

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm

Оновлено для JDK 8u152 об / хв

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm

Оновлено для JDK 8u144 об / хв

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm

Оновлено для JDK 8u131 RPM

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

Оновлено для JDK 8u121 об / хв

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.rpm


2
Цей абсолют мені допоміг. Щоб використовувати tar.gz, мені просто довелося перейменувати .rpm на .tar.gz
Yoraco Gonzales

19

Я знаю, що Oracle зробив все можливе, щоб зробити їх Java Runtime та Java SDK максимально жорсткими.

Ось кілька посібників для любителів командного рядка.

Для систем, схожих на Debian (тестується на Debianстиснення та Ubuntu12.x +)

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install --yes oracle-java7-installer
exit

Примітка: якщо ви знаєте кращий чи простіший спосіб додати коментар, я оновлю керівництво.


2
За станом на 11.11.2013, інші методи не легко підлаштовуються за допомогою різних версій. Цей метод працює незалежно від поточної версії і може бути автоматизований / сценарій / запуск без нагляду за допомогою параметрів apt-get, таких як "--yes".
Стефан Гурішон

Спробував цей метод у програмі Oracle-java8-installer з --yes, --assume-yes, --force-yesопціями, але щоразу, коли встановлення хоче, щоб я прийняв ліцензійну угоду з enter-key.
Дрей

9

Комплект розробки Java SE 12.0.2

TAR.GZ

wget  --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.tar.gz

чому --no-check-certificate? він працює добре без цього перемикача, тому з точки зору безпеки його не слід використовувати, особливо коли він застарілий.
tymik


6

Oracle поставив запобіжний файл cookie на посилання для завантаження, щоб змусити вас погодитися з умовами, навіть якщо в ліцензійній угоді на використання Java чітко зазначено, що лише використовуючи Java, ви "погоджуєтесь" на ліцензію.

Метод, який хоче Oracle, полягає в тому, щоб ви завантажили його за угодою. Після цього цей сценарій cn буде змінено для вашого конкретного Linux

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
#Modify these variables as needed...
tempWork=/tmp/work
locBin=/usr/local/bin
javaUsrLib=/usr/lib/jvm

sudo mkdir -p $javaUsrLib
mkdir -p $tempWork
cd $tempWork

#Extract the download
tar -zxvf $downloadDir/jdk*tar.gz

#Move it to where it can be found...

sudo mv -f $tempWork/jdk* $javaUsrLib/

sudo ln -f -s $javaUsrLib/jdk1/bin/* /usr/bin/

#Update this line to reflect versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_03"
#Extract the download
tar -zxvf $tempWork/*

#Move it to where it can be found...

sudo mv -f $tempWork/jdk1* $javaUsrLib/

sudo ln -f -s $javaUsrLib/jdk1*/bin/* /usr/bin/
sudo rm -rf $tempWork
#Update this line to reflect newer versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_03"

if ! grep "JAVA_HOME=$javaUsrLib/jdk1.7.0_03" /etc/environment
then
    echo "JAVA_HOME=$javaUsrLib/jdk1.7.0_03"| sudo tee -a /etc/environment
fi


exit 0

1
Ця відповідь передбачає, що ви використовуєте Linux, і що ви хочете встановити його нестандартним способом / місцем і купою інших речей. Кращою відповіддю буде "просто дотримуйтесь інструкцій із встановлення на веб-сайті для завантаження" ... якщо ви не використовуєте Ubuntu, і в цьому випадку є інші способи зробити це.
Стівен C

8
І як це не дивно, що відповідь припускає Linux, коли назва питання включає Linux? Сцеіпт - це не один розмір, враховуючи, що сам Linux не такий. З огляду на це моя власна відповідь на моє власне запитання, я перевірив це, і це працювало на мене.
thejartender

6

Для тих, хто потребує JCE8, ви можете також завантажити його.

curl -L -C - -b "oraclelicense=accept-securebackup-cookie" -O http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

Або

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

5

Це працює для JDK 6, вам просто потрібно замінити URL-адресу завантаження на останню версію.

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk6-downloads-1637591.html;" http://download.oracle.com/otn-pub/java/jdk/6u33-b03/jdk-6u33-linux-x64.bin

Це працює, але я не міг вибрати 6u48, тому що частина, де у вас є 6u33-b03.
Джейкоб Філіпс

2013-11-02, це не могло працювати. Завантажте HTML-сторінку реєстрації замість файлу.
Стефан Гурішон

5

ця команда зараз може завантажити пакет jdk8 tgz (2018-09-06), удачі!

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

Я спробував інші команди, але нічого не вийшло, але цей працював безперебійно (запустити 20 вересня / 2019).
Ще один кодер

4

Замість того, щоб використовувати для кожної нової версії Java нове посилання або змінювати наявні сценарії, я шукав більш загальний спосіб автоматизації завантаження необхідних пакетів Java та подальшої установки через yum localinstall ${JAVA_ENVIRONMENT}-${JAVA_VERSION}-linux-x64.rpm.

Я використовував якось тривіальний підхід, подібний до дії вручну / користувача, щоб знайти пакунок і завантажити його. Я також впевнений , що один буде знайти більш витончений спосіб зробити це за допомогою інших інструментів , таких як egrep, awkі т.д .., так що залиште його тут в якості прикладу:

#!/bin/bash

### Proxy settings
# If there is a company proxy 

PROXY="my.proxy.local:8080"
PROXY_TYPE="--proxy-ntlm" # or leave empty with ""
USER="user"
PASS='pass'

### Find out the links to JRE and JDK 
# To do so, got to the page http://www.oracle.com/technetwork/java/javase/downloads/

BASE_URL="technetwork/java/javase/downloads"

# Put the whole page into a single string/line

BASE_URL_OUTPUT="$(curl -s -k ${PROXY_TYPE} -x "http://${USER}:${PASS}@${PROXY}" -L0 http://www.oracle.com/${BASE_URL}/)"

# Define the environments to download 

JAVA_ENVIRONMENTS=("JRE" "JDK") # ! yet "SERVER-JRE"

for JAVA_ENVIRONMENT in "${JAVA_ENVIRONMENTS[@]}"
do

echo
echo "JAVA_ENVIRONMENT="$JAVA_ENVIRONMENT
echo

for (( JAVA_BASE_VERSION = 8; JAVA_BASE_VERSION <= 10; JAVA_BASE_VERSION += 2 ))  
do

echo "JAVA_BASE_VERSION="$JAVA_BASE_VERSION

### "Read the page"
# and follow the links for the package interested in 

DOWNLOAD_SITE="$(echo $BASE_URL_OUTPUT | grep -m 1 -io "${JAVA_ENVIRONMENT}${JAVA_BASE_VERSION}-downloads-[0-9]*.html" -- | tail -1)"
echo "DOWNLOAD_SITE="$DOWNLOAD_SITE

### Gather the necessary download links
# To do so, following the link to the download site
# reading and accept the license 
# 
# ... the greedy regular expression is to address the different syntax of the links
# and already prepared for OR .gz files 

DOWNLOAD_LINK_OUTPUT="$(curl -s -k ${PROXY_TYPE} -x "http://${USER}:${PASS}@${PROXY}" -L -j -H "Cookie: oraclelicense=accept-securebackup-cookie" http://www.oracle.com/${BASE_URL}/${DOWNLOAD_SITE} |  grep -io "filepath.*${JAVA_ENVIRONMENT}-[${JAVA_BASE_VERSION}].*linux[-_]x64[._].*\(rpm\)" -- | cut -d '"' -f 3 | tail -1)"

# and echo out the link

echo "DOWNLOAD_LINK_OUTPUT="$DOWNLOAD_LINK_OUTPUT

done

done

Оскільки посилання для завантаження доступні зараз, можна продовжити далі wgetабо curl.


3

Все вищезазначене, здається, припускає, що ви знаєте URL для останнього Java RPM ...

Oracle надає стійкі посилання на останні оновлення кожної версії Java, як це зафіксовано на веб-сторінці https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=397248601136938&id=1414485.1 - хоча вам потрібно створити / увійти до облікового запису підтримки Oracle . * В іншому випадку ви можете отримати доступ до останнього "загальнодоступного" оновлення кожної версії Java, наприклад, 1.6_u45 (березень 2013 р .; останнє оновлення - u65, жовтень 2013 р.) *

Після того, як ви знаєте , стійке з'єднання, ви повинні бути в змозі вирішити її до реальної завантаженні; Наступне працює для мене, хоча я ще не знаю, чи зміниться посилання на "ару".

ME=<myOracleID>
PW=<myOraclePW>
PATCH_FILE=p13079846_17000_Linux-x86-64.zip

echo "Get real URL from the persistent link"

wget -o getrealurl.out --no-cookies --no-check-certificate --user=$ME \
--password=$PW --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" \
https://updates.oracle.com/Orion/Services/download/$PATCH_FILE?aru=16884382&\
patch_file=$PATCH_FILE

wait    # wget appears to go into background, so "wait" waits 
        # until all background processes complete

REALURL=`grep "^--" getrealurl.out |tail -1 |sed -e 's/.*http/http/'`
wget -O $PATCH_FILE $REALURL
#These last steps must be done quickly, as the REALURL seems to have a short-lived 
#cookie on it and I've had no success with  --keep-session-cookies etc.

1
Настійно рекомендую не використовувати --no-check-сертифікат при передачі пароля.
Рік Моріц

3

Як уже розміщено тут: https://stackoverflow.com/a/41718895/4370196

Оновлення для JDK 8 Update 121

Оскільки Oracle вставив деякий md5hash у свої посилання для завантаження, неможливо автоматично зібрати посилання для завантаження для командного рядка.

Тому я розробив якийсь неприємний командний рядок bash, щоб отримати останню посилання для завантаження jdk, завантажити його та встановити безпосередньо через rpm. Для всіх, хто цікавиться:

wget -q http://www.oracle.com/technetwork/java/javase/downloads/index.html -O ./index.html && grep -Eoi '] +>' index.html | grep -Eoi '/technetwork/java/javase/downloads/jdk8-downloads- evidence0-9Sense+.html' | (голова -n 1) | awk '{print " http://www.oracle.com " $ 1}' | xargs wget --no-cookies --header "Cookie: gpw_e24 = xxx; oraclelicense = accept-securebackup-cookie;" -O index.html -q && grep -Eoi '"filepath": "[^"] + jdk-8u [0-9] + - linux-x64.rpm "' index.html | grep -Eoi 'http: [ ^ "] + '| xargs wget --no-cookies --header "Cookie: gpw_e24 = xxx; oraclelicense = accept-securebackup-cookie;" -q -O ./jdk8.rpm && sudo rpm -i ./jdk8.rpm

Смілива частина повинна бути замінена пакетом по своєму смаку.


Так, зібрати посилання вже не так просто. Я використовував подібний підхід у скрипті bash, щоб отримати останні посилання для завантаження JRE та JDK для версій 8 та 9. Його можна знайти як відповідь у цій темі .
U880D,

2

Я вирішую це (для дистрибутивів Linux на базі Debian), використовуючи пакети, використовуючи java-package кілька разів (для різних архітектур), а потім поширюючи їх внутрішньо.

Великим плюсом є те, що цей метод завжди працює; якими б шаленими не стали веб-сторінки Oracle. Oracle більше не може зламати мою збірку!

Мінус у тому, що спочатку налаштовувати трохи більше роботи.

  • Завантажте в браузер файли tar.gz вручну (таким чином "приймаючи" їх умови)
  • Біжи make-jpkg jdk-7u51-linux-x64.tar.gz. Це створюєoracle-java8-jdk_8_amd64.deb
  • Розподіліть його у своїй організації

Для розповсюдження в Інтернеті я пропоную використовувати підходящий сховище, захищене паролем, або надавати необроблені пакети, використовуючи симетричне шифрування:

passphrase="Hard to crack string. Use /dev/urandom for inspiration."
gpg --batch --symmetric --force-mdc --passphrase-fd 0 \
   oracle-java8-jdk_8_amd64.deb <<< "$passphrase"

Звичайно, надання (незашифрованих) пакетів .deb в Інтернеті, ймовірно, є порушенням вашої ліцензійної угоди з Oracle, де зазначено:

... Oracle надає вам ... ліцензію ... на відтворення та використання внутрішньо Програмного забезпечення повного та немодифікованого з єдиною метою запуску програм "

Якщо у вас є кінець, який має захист паролем, все, що вам потрібно зробити, це apt-get installзробити. Якщо у вас є необроблені пакунки, завантажте, розшифруйте dpkg -iїх та їх. Працює як шарм!


2
так це було реалізовано в честь ліцензії. Це приголомшливо :-)
Коусер

2

wget Це працювало для мене JDK8

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2F%www.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"

2

Прийнята відповідь не працювала для мене станом на 2017-04-25. Однак простим рішенням було використання -bпрапора замість --headerопції.

Наприклад, щоб отримати jdk-1.8_131:

version='8u131'; wget -H -O jdk-$version-linux-x64.tar.gz --no-check-certificate --no-cookies -b "oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/$version-b11/jdk-$version-linux-x64.tar.gz

Це буде виконуватися у фоновому режимі, записуючи вихід на wget-log.


1

Спробуйте

wget --no-cookies --header "Cookie: s_nr=1359635827494; s_cc=true; gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk6downloads-1902814.html; s_sq=%5B%5BB%5D%5D; gpv_p24=no%20value" http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64-rpm.bin --no-check-certificate -O ./jdk-6u45-linux-x64-rpm.bin

якщо ви такі, як я, намагаючись отримати Oracle JDK 6.

джерело: Завантажити Oracle JVM за допомогою curl / wget


1

Я створив сценарій завантаження jdk (специфічний для tar.gz) для моїх скриньок gentoo. Не потрібно оновлювати, як інші подібні сценарії, намагаючись "грубої сили" завантажити останню версію для будь-якої версії, яку ви хочете.

ВИКОРИСТАННЯ

jdk-download< <version> <platform> [<build>]

* <version> - Something like "8u40"
* <platform> - Usually i586 or x64
* <build> - The internal build number used by oracle, to avoid guessing and trying to download starting from 99 to 1 (build 0, really?!!)

Повідомлення в блозі

Джерело на bitbucket


1

oracle-java-download - це проект на GitHub, який дозволяє створювати посилання для завантаження для JDK 8 та JDK 9, які можна використовувати для подальшої обробки, наприклад, в автоматизованих процесах збирання або розгортання.

Для запуску потрібні Linux, Docker та JDK> = 8.


1

wget --no-cookies --no-check-сертифікат --header "Cookie: gpw_e24 = http% 3A% 2F% 2Fwww.oracle.com% 2F; oraclelicense = accept-securebackup-cookie" " http: // завантажити. oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm?AuthParam=1516282527_40effcfefd78d78bce12c0a4030a1b05 "


HTTP-запит надісланий, очікуючи відповіді ... 403 Заборонено 2018-01-24 03:24:51 ПОМИЛКА 403: Заборонено.
Єзекіїль Баняга

1

Контекст

Нещодавно я стикався з тією ж проблемою, і хоча коментарі на цій сторінці та деякі інші давали корисні підказки - я вважав, що було б добре задокументувати кроки, які я вжив, щоб вирішити проблему для людей, які можуть потребувати подальшої допомоги.

Деталі системи

Я стежу за налаштуванням PNDA на AWS, дотримуючись покрокового керівництва по встановленню pnda за адресою:

https://github.com/pndaproject/pnda-guide/blob/develop/provisioning/aws/PREPARE.md

Я використовую ubuntu 14.04 [доступний вільний рівень] на хмарі AWS, і я запускаю код з 64-розрядного ноутбука Windows8.1. Я використовую PUTTY для підключення до екземпляра сервера. Я клонував код pnda з https://github.com/pndaproject/pnda в екземпляр ubuntu.

Важлива примітка Зауважте, що якщо ви плануєте використовувати екземпляр Ubuntu на AWS, переконайтеся, що він лише 14.04. Якщо ви використовуєте версію 16, це не працює. Я навчився цього важким шляхом!

Етапи роздільної здатності

Оскільки ті, хто зайшов до помилки, про яку йшлося тут, знали б, що файл створення дзеркала включає в себе наступні кроки -

1) Запустіть скрипт create_mirror.sh, [ sudo su -s ./create_mirror.sh ]щоб запустити повний процес створення дзеркала

2) Цей скрипт у свою чергу викликає різні інші сценарії - один з них create_mirror_misc.sh ; Цей сценарій посилається на те, у pnda-static-file-dependencies.txtякому є список файлів, які потрібно завантажити.

3) У першому рядку pnda-static-file-зависимостей.txt є посилання на завантаження файлу jdk-8u131-linux-x64.tar.gz http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz oraclelicense=accept-securebackup-cookie; Саме в цей момент мій сценарій не вдався до повідомленняFailed to download http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz after 3 retries

4) Я перейшов на сторінку http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gzі виявив таке повідомлення про помилку**In order to download products from Oracle Technology Network you must agree to the OTN license terms**

5) Для вирішення цієї проблеми я вніс наступні зміни до pnda-static-file-dependencies.txt; Я додав - no-check-сертифікат --no-cookies, щоб обійти умову ліцензійної угоди

6) Отже, переглянений код виглядає так: http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz --no-check-certificate --no-cookies oraclelicense=accept-securebackup-cookie

Я сподіваюся, що це корисно.


1

ви повинні спробувати:

wget \
        --no-cookies \
        --header "Cookie: oraclelicense=accept-securebackup-cookie" \
        http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz \
        -O java.tar.gz

1

завантажити jdk 8u221

$ wget -c --content-disposition "https://javadl.oracle.com/webapps/download/AutoDL?BundleId=239835_230deb18db3e4014bb8e3e8324f81b43"
$ old=$(ls -hat | grep jre | head -n1)
$ mv $old $(echo $old | awk -F"?" '{print $1}')

мій блог 044-wget 下载 jdk8u221


0

Це відбувається тому, що при натисканні на кнопку "Прийняти" на сторінці завантаження у вашому веб-переглядачі веб-сторінка зберігає файл cookie, який він використовує для перевірки вашої згоди, перш ніж ви зможете завантажити файл. Проблема виникає при спробі завантаження з командного рядка за допомогою wget, і це тому, що інформація про файли cookie не надсилається із запитом wget для завантаження файлу, так що з точки зору файлового сервера ви абсолютно новий користувач, який не прийняв ліцензію угоду.

Одне рішення - надіслати інформацію про файли cookie, використовуючи параметр --header утиліти wget (як показано вище в інших відповідях). В ідеалі, якщо якийсь вміст захищений, ви використовуєте різні параметри керування сеансами, доступні в wget. Однак для цієї конкретної проблеми вона вирішується (наразі) шляхом надсилання Cookieзаголовка із запитом на завантаження.


Коли ви натискаєте кнопку "Прийняти" та захоплюєте URL-адресу із цієї сторінки, вона спрямовує вас http://download.oracle.com/otn/java/...замість http://download.oracle.com/otn-pub/java/...просто змінити /otn/на/otn-pub/
T.CK

0

Ось як самостійно отримати команду. Це працює для будь-якої версії:

  1. Доступ до сторінки пакунків тут: https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
  2. Клацніть посилання для завантаження потрібного пакету
  3. Поставте прапорець із зазначенням, що ви "переглянули та прийняли ..."
  4. Клацніть правою кнопкою миші та скопіюйте адресу посилання з кнопки
  5. Вставте в текстовий редактор і потім скопіюйте все ПІСЛЯ 'nexturl =', починаючи з 'https: //'
  6. Оновіть URL-адресу для завантаження в цій команді, і вам слід добре:

    wget --no-check-certifikat -c --header "Cookie: oraclelicense = accept-securebackup-cookie" https://download.oracle.com/otn/java/jdk/11.0.6+8/90eb79fb590d45c8971362673c5ab495/jdk- 11.0.6_linux-x64_bin.tar.gz

Щоб додатково пояснити wget, сертифікат --no-check повинен бути достатньо зрозумілим, але вміст заголовка (для будь-якого дзвінка) можна виявити, скориставшись вкладкою "Інструменти для розробників" у вашому браузері. Інструменти для розробників є потужними і заслуговують часу на вивчення. Насолоджуйтесь.


0

@eric відповідь зробила для мене хитрість, вам потрібно прийняти умови в команді, яку ви встановлюєте, тобто

"Cookie: oraclelicense=accept-securebackup-cookie"

тому ваша остаточна команда виглядає таким чином

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

Ви можете вирішити оновити версію, перейшовши 8u131на 8uXXX. настільки довго він доступний в репо.


-3
sudo wget --no-check-certificate --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.rpm"

-4

Чому б не натиснути, щоб завантажити з браузера, а потім скопіювати та вставити точне посилання, куди воно було завантажено, наприклад:

wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz?AuthParam=1380225131_dd70d2038c57a4729d8c0226684xxxx

Ви можете дізнатися про посилання, переглянувши вкладку мережі вашого браузера після прийняття термінів в Oracle та натиснувши на завантаження. F12 в Chrome. Firebug у Firefox.


1
Тому що людям це потрібно для автоматичної установки Java на сервери із скриптами bash.
Saša Šijak
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.