【问题标题】:cabal can't use http proxycabal 无法使用 http 代理
【发布时间】:2014-04-17 15:51:36
【问题描述】:

我的 Linux(redhat6) 服务器必须使用 http 代理连接到外部世界。虽然它适用于 wget 等其他东西,但它不适用于 cabal。

cabal update -v3

显示如下错误:

407 - 需要代理身份验证 cabal:下载失败 http://hackage.haskell.org/packages/archive/00-index.tar.gz: ErrorMisc "不成功的 HTTP 代码:407"

我尝试将 http_proxy 环境变量更改为 http://user:passwd at proxy:port 的格式,但它也不起作用。

同样的问题被问到here

但是我不允许使用 polipo 之类的代理服务器,有没有其他方法可以让 cabal 在代理后面工作?

【问题讨论】:

  • 使用cntlm 怎么样?它负责身份验证。
  • 你使用的是什么操作系统?
  • redhat6,抱歉忘了说,在我的问题中添加。我刚刚启动并运行了 cntlm,但 cabal 仍然给出同样的错误。
  • @swang 设置cntlm后,你设置了新的http_proxy和其他环境变量吗?
  • 啊.....我明白了,我需要重定向 http_proxy 才能与 cntlm 对话,它现在可以工作了,非常感谢!!我如何接受您的评论作为答案?

标签: haskell cabal cabal-install


【解决方案1】:

您可以使用cntlm 与代理交谈。它将处理身份验证问题。配置安装cntlm后,通过修改http_proxyhttps_proxy等设置新的环境变量。

你的cabal 命令应该在那之后工作。

【讨论】:

    【解决方案2】:

    这里有一些详细的过程:

    1. here下载cntlm 这是一个没有其他依赖的c程序,非常容易制作,只需按照下载包中的说明进行即可。

    2. 安装 cntlm 后,请关注来自上校恐慌的 answer。显然在linux上你需要把cntlm.exe改成./cntlm,我把配置文件命名为cntlm.conf

    3. cntlm 的默认监听端口是 3124,如果您不能使用该端口,请将其更改为 53124 之类的其他端口,然后将其添加到您的 cntlm.conf 或 cntlm.ini 文件中:

      Listen              127.0.0.1:53124
      
    4. 在后台启动cntlm:

      
      ./cntlm -c cntlm.conf
      
    5. 更改您的 http_proxy 环境变量以与 cntlm 进程而不是真正的代理对话。

      
      export http_proxy=http:// 127.0.0.1:53124
      

    就是这样,阴谋集团将一如既往地运作良好。

    【讨论】:

    • wget 尊重环境变量 http_proxy 等。因此,如果您设置了正确的环境变量,它应该可以工作。
    • 我正确设置了http_proxy但没有设置https_proxy,可能是我哪里搞砸了,等我回到办公室再看看。
    • 您可能还想查看 wget 的文档。它似乎有设置代理的选项。在我的办公室里,我在代理下工作,一旦我正确设置了环境变量,wget 对 cntlm 没有任何问题。 :)
    • 是的,你是对的,不知道为什么它第一次不起作用,但它现在肯定起作用了,编辑了我自己的答案
    【解决方案3】:

    您也可以直接在系统设置中设置http_proxy:

    http_proxy=http://username:password@hostname:port
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      相关资源
      最近更新 更多