【问题标题】:getting 'internet not reachable' with sdkman使用 sdkman 获取“无法访问互联网”
【发布时间】:2016-05-12 13:51:44
【问题描述】:

互联网工作正常,但我从 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 似乎解析得很慢。我可以 ping,但分辨率大约需要 7 秒。这会导致 sdkman 超时吗?

有什么想法吗?调试的下一步是什么?谢谢!

【问题讨论】:

    标签: sdkman


    【解决方案1】:

    您需要在配置文件中设置curl connect timeoutcurl max time,配置文件分配在以下路径:

     $YOUR_HOME/.sdkman/etc/config
    

    到以下:

    sdkman_curl_connect_timeout=20
    sdkman_curl_max_time=0

    希望对你有帮助

    【讨论】:

    • 太奇怪了
    【解决方案2】:

    好吧,我不得不努力让 SDKMAN 让我下载软件包。我在一个公司代理后面,并使用 CNTLM 在我的本地计算机上解决它。

    下载后我必须在本地机器上编辑一个 sdkman 文件。

    下载也是一回事。对我来说,将 -x http://localhost:3128 添加到 curl 命令是有效的。 我安装 gradle 的步骤:

    • 我下载了安装脚本并将其存储在 /tmp 文件夹中。
    • 调整了 installscript 并在 curl 命令中添加了额外的参数。现在我可以看到该工具已下载并安装在 $HOME/.sdkman 目录中。
    • 之后我不得不运行 sdkman-init.sh
    • 然后我必须编辑 .sdkman/src/sdkman-utils.sh 并将 -x 选项添加到调用 curl 的每一行。

    成功了。记得在每一步之后关闭终端并打开一个新终端。

    【讨论】:

      【解决方案3】:

      不同的应用程序使用不同的设置建立网络连接。

      在我的情况下(我使用 Macbook Pro 通过代理访问互联网),虽然我在 System Preferences->Network->Advanced->Proxies 中设置了 http 和 https 代理。它确实对浏览器(Safari)生效,但对 sdkman 命令行工具无效。

      我必须手动设置环境变量 http_proxyhttps_proxy

      以下是我在 Macbook Pro 上设置的内容。

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

      然后 sdkman 工作正常。

      【讨论】:

        【解决方案4】:

        修复对我来说是一个两步过程:

        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
        

        别忘了重启终端。

        【讨论】:

        • 添加可执行位对我有用...谢谢!
        【解决方案5】:

        看起来它现在正在工作......也许是服务器端的问题?或者可能是我这边的间歇性网络问题。无论如何,下一次危机...... :)

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题(在公司代理后面)。 在我的例子中,设置了http_proxyhttps_proxy 环境变量。

          有趣的是,大多数发行版不编译带有(相当罕见的)https_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 后,curl 和sdkman(因为它们似乎使用openssl)都开箱即用。

          【讨论】:

            【解决方案7】:

            试试

            sdkman_insecure_ssl=true in .sdkman/etc/config
            

            【讨论】:

            • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-24
            • 2014-11-16
            • 2016-02-20
            • 2019-08-23
            • 2021-01-26
            相关资源
            最近更新 更多