(Это копия моего вопроса о переполнении стека. Я понял, что суперпользователь может быть лучшим местом, чтобы задать этот вопрос.)
Я пытаюсь использовать 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-прокси, произошел сбой.