cabal无法使用http代理

时间:2014-04-17 15:51:36

标签: haskell cabal cabal-install

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

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这样的代理服务器,还有其他方法可以让代理服务器在代理服务器之后工作吗?

3 个答案:

答案 0 :(得分:2)

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

之后你的cabal命令应该可以运行。

答案 1 :(得分:2)

这里有一些详细的程序:

  1. here下载cntlm 它是一个没有其他依赖关系的c程序,所以很容易制作,只需按照下载包中的说明进行操作。

  2. 安装cntlm后,请按照Colonel Panic的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
    

  6. 这就是它,cabal将一如既往地发挥作用。

答案 2 :(得分:-1)

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

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