Получить "Интернет не доступен" с SDKMAN

Интернет работает нормально, но я получаю эту ошибку от sdkman:

    06:47 $ sdk version
==== INTERNET NOT REACHABLE! ===============================

 Some functionality is disabled or only partially available.
 If this persists, please enable the offline mode:

   $ sdk offline

============================================================

SDKMAN 4.0.35

Кажется, мой DNS разрешается очень медленно. Я могу пинговать, но разрешение занимает ~7 секунд. Может ли это привести к превышению времени ожидания sdkman?

Какие-нибудь мысли? каков следующий шаг к отладке? Спасибо!

9 ответов

Вам нужно установить curl connect timeout а также curl max time в файле конфигурации, который расположен по следующему пути:

 $YOUR_HOME/.sdkman/etc/config

к следующему:

sdkman_curl_connect_timeout =20
sdkman_curl_max_time =0

Я надеюсь, что это поможет вам

Что ж, мне пришлось изо всех сил заставить SDKMAN разрешить мне загружать пакеты. Я использую корпоративный прокси-сервер и использую CNTLM, чтобы обойти его на моем локальном компьютере.

Мне пришлось отредактировать файл sdkman на моем локальном компьютере после его загрузки.

Скачивание тоже было делом. Для меня сработало добавление -x http://localhost:3128/ в команду curl. Шаги, которые я предпринял для установки Gradle:

  • Я скачал установочный скрипт и сохранил его в папке / tmp.
  • Скорректировали сценарий установки и добавили дополнительный параметр в команду curl. Теперь я мог видеть, как инструмент загружается и устанавливается в каталоге $HOME/.sdkman.
  • После этого мне пришлось запустить sdkman-init.sh
  • Затем мне пришлось отредактировать.sdkman/src/sdkman-utils.sh и добавить параметр -x в каждую строку, где вызывается curl.

Это сработало. Не забывайте закрывать терминал и открывать новый после каждого шага.

Исправление было двухэтапным процессом для меня:

  1. Установите исполняемый бит на sdkman-init.sh (chmod +x .sdkman/bin/sdkman-init.sh)
  2. изменять ~/sdkman/etc/config, задавать
sdkman_curl_connect_timeout=30
sdkman_curl_max_time=50

И не забудьте перезапустить терминал.

Пытаться

      sdkman_insecure_ssl=true in .sdkman/etc/config

Различные приложения используют разные настройки для установления сетевого подключения.

В моем случае (я получаю доступ к Интернету через прокси, используя Macbook Pro), хотя я установил http и https прокси в Системных настройках-> Сеть-> Дополнительно-> Прокси. Это вступило в силу для браузера (Safari), но не для инструмента командной строки sdkman.

Я должен установить переменные среды http_proxy и https_proxy вручную.

Ниже приведено то, что я установил на свой Macbook Pro.

export http_proxy=http://proxy.abc.com:2500
export https_proxy=https://proxy.abc.com:2500

Тогда SDKMAN работает нормально.

У меня такая же проблема (за корпоративным прокси). В моем случае, http_proxy а также была установлена ​​переменная окружения.

Интересно, что большинство дистрибутивов не компилируют openssl с (довольно редкой) поддержкой, и поэтому curl не работает:

      curl https://www.google.com
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to proxy.company.com:3128 

Решение моей проблемы:

      unset https_proxy

После снятия с охраны https_proxy, завиток и sdkman (потому что они, похоже, используют openssl) оба работают из коробки.

Или 6 лет спустя вы столкнетесь с ошибкой , и проблема будет решена путем обновленияcurl.

Шаги для анализа:

      # Find the SDK website URL:
cat ~/.sdkman/bin/sdkman-init.sh | grep -i api
# Run curl
curl -vvv https://api.sdkman.io/2

Если это показывает что-то вродеInternal SSL engine error encountered during the SSL handshakeвам нужно обновить curl, например, в MacOS, используя brew:brew upgrade curl

Я столкнулся с этой проблемой. Проблема была в том, что мой интернет-провайдер блокировал его. Вы можете решить эту проблему, используя другой Интернет или VPN.

Похоже, это работает сейчас... может быть, проблема на стороне сервера? Или, может быть, проблема с сетью на моей стороне. Во всяком случае, следующий кризис...:)

Другие вопросы по тегам