(Это копия моего вопроса о переполнении стека. Я понял, что суперпользователь может быть лучшим местом, чтобы задать этот вопрос.)

Я пытаюсь использовать oracle-java8-installer команды WebUpd8 для установки Java 8 на мои компьютеры с Ubuntu 14.04. Некоторые из них могли преуспеть, но другие потерпели неудачу. После некоторой отладки я понял, что это вызвано настройкой HTTP-прокси. Ниже я приведу более подробную информацию, но в основном мои вопросы таковы: почему использование http_proxy вызывает проблему? Я считаю, что это должно быть связано с тем, как работает HTTP-прокси, но, поскольку у меня мало опыта в этом, кто-то может сказать мне, какие знания я должен изучить, чтобы понять эту проблему?

Вот больше подробностей.

Под капотом oracle-java8-installer использует wget для загрузки пакета jdk-8u181. Таким образом, я могу воспроизвести проблему с шагами ниже:

  • Установить apt-cacher-ng: sudo apt-get install apt-cacher-ng
  • Вам не нужно ничего настраивать в конфигурации APT, чтобы воспроизвести эту проблему. apt-cacher-ng использует localhost:3142 по умолчанию для кэширования пакетов.
  • Запустите http_proxy="http://localhost:3142" wget --continue --no-check-certificate -O jdk-8u181-linux-x64.tar.gz --header "Cookie: oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

Вот некоторые заметки:

  • http://localhost:3142 настроен для apt-cacher-ng . На тех машинах, на которых произошел сбой, был установлен apt-cacher-ng прежде чем я попытался установить jdk-8u181.
  • Cookie: oraclelicense=a означает, что пользователь принял лицензию.

Если вы выполните последнюю команду, загрузка jdk-8u181-linux-x64.tar.gz будет немедленно завершена. Есть строка с надписью "Запрос прокси отправлен, ожидая ответа ... 200 ОК ". Но если вы откроете полученный «.tar.gz», вы увидите, что это просто HTML-страница, которая содержит информацию об ошибке.

Если вы удалите переменную среды http_proxy и запустите:

wget --continue --no-check-certificate -O jdk-8u181-linux-x64.tar.gz --header "Cookie: oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

У вас будет полный пакет загружен правильно.

Мое предположение заключается в том, что HTTP-прокси работает с wget если целевой URL является окончательным, поэтому прокси-сервер будет кешировать его в своем хранилище. Концептуально это похоже на хранилище ключей:

proxy['URL'] = result

Однако в этом случае целевой URL (http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz) фактически возвращает " 302 "код и поле заголовка" Местоположение "для нового URL. Это видно из вывода:

ywen @ ubuntu: ~ $ wget --продолжить --no-check-certificate -O jdk-8u181-linux-x64.tar.gz --header "Cookie: oraclelicense = a" http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz --2018-08-01 11: 10: 04-- http://download.oracle.com/otn -pub/Java /JDK /8u181-B13/96a7b8442fe848ef90c96a2fad6ed6d1/JDK-8u181-Linux-x64.tar.gz

Разрешение download.oracle.com (download.oracle.com) ... 23.32.72.143

Подключение к download.oracle.com (download.oracle.com) | 23.32.72.143 |: 80 ... подключено.

HTTP-запрос отправлен в ожидании ответа ... 302 Временно перемещено

Расположение: https://edelivery.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz [следующий]

--2018-08-01 11:10:04 - https://edelivery.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

Разрешение edelivery.oracle.com (edelivery.oracle.com) ... 23.216.148.161, 2001: 559: 19: 3081:: 2d3e, 2001: 559: 19: 3086:: 2d3e

Подключение к edelivery.oracle.com (edelivery.oracle.com) | 23.216.148.161 |: 443 ... подключено.

HTTP-запрос отправлен в ожидании ответа ... 302 Временно перемещено

Место нахождения : http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1533136324_72efc4e620fa5bb4b5

--2018-08-01 11: 10: 04-- http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam = 1533136324_72efc4e6208a5a7fc1cbba0527c741b6

Подключение к download.oracle.com (download.oracle.com) | 23.32.72.143 |: 80 ... подключено.

HTTP-запрос отправлен в ожидании ответа ... 200 ОК

Длина: 185646832 (177M) [приложение /x-gzip]

Сохранение в: 'jdk-8u181-linux-x64.tar.gz'

Обработка перенаправления выходит за рамки возможностей прокси-сервера (я прав ??), поэтому на тех компьютерах, на которых установлены HTTP-прокси, произошел сбой.

0