(To jest kopia mojego pytania na temat przepełnienia stosu . Uświadomiłem sobie, że superużytkownik może być lepszym miejscem do zadawania tego pytania).

Próbuję użyć zespołu WebUpd8 oracle-java8-installerdo zainstalowania Java 8 na moich komputerach Ubuntu 14.04. Niektóre z nich mogą odnieść sukces, a inne nie. Po pewnym debugowaniu zdałem sobie sprawę, że było to spowodowane ustawieniem proxy HTTP . Podam więcej szczegółów poniżej, ale w zasadzie moje pytania brzmią: Dlaczego użycie http_proxyprzyczyny powoduje problem? Uważam, że musi to mieć związek z tym, jak działa serwer proxy HTTP, ale skoro mam niewielkie doświadczenie, czy ktoś mógłby mi powiedzieć, jakiej wiedzy powinienem nauczyć się rozumieć ten problem?

Oto więcej szczegółów.

Pod maską oracle-java8-installerużywa się wgetdo pobrania pakietu jdk-8u181. Aby odtworzyć problem, wykonaj poniższe czynności:

  • Zainstaluj apt-cacher-ng:sudo apt-get install apt-cacher-ng
  • Nie trzeba niczego konfigurować w konfiguracji APT, aby odtworzyć ten problem. domyślnie apt-cacher-ngużywa localhost:3142do buforowania pakietów.
  • Biegać 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

Oto kilka uwag:

  • http://localhost:3142Jest skonfigurowany apt-cacher-ng. Te komputery, które zawiodły, zostały apt-cacher-ngzainstalowane, zanim próbowałem zainstalować jdk-8u181.
  • Cookie: oraclelicense=aJest wskazanie użytkownik zaakceptował licencji.

Jeśli uruchomisz ostatnie polecenie, pobieranie jdk-8u181-linux-x64.tar.gzzostanie zakończone natychmiast. Jest wiersz z komunikatem „Wysłano żądanie proxy, oczekuje na odpowiedź ... 200 OK”. Ale jeśli otworzysz otrzymany plik „.tar.gz”, zobaczysz, że jest to tylko strona HTML zawierająca informacje o błędach.

Jeśli usuniesz http_proxyzmienną środowiskową i uruchom:

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

Pełny pakiet zostanie pobrany poprawnie.

Domyślam się, że serwer proxy HTTP działa, wgetjeśli docelowy adres URL jest końcowym adresem URL, więc serwer proxy buforuje go w swojej pamięci. Pod względem koncepcyjnym przypomina sklep z kluczowymi wartościami:

proxy['URL'] = result

Jednak w tym przypadku docelowy adres URL ( http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz ) faktycznie zwraca „ 302 ” i pole nagłówka„ Lokalizacja ”dla nowego adresu URL. Można to zobaczyć na podstawie danych wyjściowych:

ywen @ ubuntu: ~ $ 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 --2018-08-01 11: 10: 04-- http://download.oracle.com/otn -pub / java / jdk / 8u181-b13 / 96a7b8442fe848ef90c96a2fad6ed6d1 / jdk-8u181-linux-x64.tar.gz

Rozwiązanie download.oracle.com (download.oracle.com) ... 23.32.72.143

Łączenie z download.oracle.com (download.oracle.com) | 23.32.72.143 |: 80 ... połączone.

Wysłano żądanie HTTP, oczekując na odpowiedź ... 302 Tymczasowo przeniesione

Lokalizacja: https://edelivery.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz [następujące]

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

Rozwiązanie edelivery.oracle.com (edelivery.oracle.com) ... 23.216.148.161, 2001: 559: 19: 3081 :: 2d3e, 2001: 559: 19: 3086 :: 2d3e

Łączenie z edelivery.oracle.com (edelivery.oracle.com) | 23.216.148.161 |: 443 ... połączone.

Wysłano żądanie HTTP, oczekując na odpowiedź ... 302 Tymczasowo przeniesione

Lokalizacja: http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz?AuthParam=1533136324_72efc4e6208a5a7fc1cbba0527c741b6 [po]

--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

Łączenie z download.oracle.com (download.oracle.com) | 23.32.72.143 |: 80 ... połączone.

Wysłano żądanie HTTP, oczekując na odpowiedź ... 200 OK

Długość: 185646832 (177M) [application / x-gzip]

Zapisywanie do: 'jdk-8u181-linux-x64.tar.gz'

Obsługa przekierowania jest niemożliwa dla serwera proxy (czy mam rację?), Dlatego te maszyny z serwerami proxy HTTP zawiodły.

yaobin
źródło