如何为 Cabal 设置代理?

如何为 Cabal 设置代理?

我在 (Windows) 代理后面使用 Ubuntu。我想使用该cabal实用程序。

jem@Respect:~$ cabal update
Config file path source is default config file.
Config file /home/jem/.cabal/config not found.
Writing default configuration to /home/jem/.cabal/config
Downloading the latest package list from hackage.haskell.org
Warning: invalid http proxy uri:
"http://domain\\user:pass@internetproxy:3128/"
Warning: proxy uri must be http with a hostname
Warning: ignoring http proxy, trying a direct connection
^C

已从环境中读取代理 URL。我的代理需要身份验证,但 cabal 希望代理 URL 以主机名开头,因此它可能会提示我输入凭据...

jem@Respect:~$ http_proxy=http://internetproxy:3128/ cabal update
Downloading the latest package list from hackage.haskell.org
No action for prompting/generating user+password credentials  provided (use: setAuthorityGen); returning Nothing
cabal: Failed to download index 'ErrorMisc "Unsucessful HTTP code: (4,0,7)"'

它是什么setAuthorityGen?如何使用它?更重要的是,我可以通过身份验证代理启用访问吗?我需要建立隧道吗?

答案1

我对 ISA 代理的标准方法是配置本地身份验证代理,例如控制论在您的 Ubuntu 机器上安装 cntlm 后,您将其配置为使用您的 Windows 用户名和密码通过 ISA 代理上的 NTLM 进行身份验证。然后将变量设置HTTP_PROXYhttp://localhost:3128(即 cntlm 正在监听的端口)。

这种方法的优点是只有一个程序需要处理 Windows 代理。所有其他程序都可以使用 cntlm 作为网关来通过。

答案2

Haskell-cafe pipermail 的回答

cabal-install在 中配置~/.cabal/config。在配置文件中添加此行:

export http_proxy=http://${username}:${password}@${proxy_address}

答案3

我已经让它工作了波利波。我的大学使用http-proxy身份验证。/etc/polipo/config您需要添加以下行

parentProxy = "proxy.server.com:80"
parentAuthCredentials = "myusername:mypassword"

然后导出http_proxy=http://localhost:8123"。它非常有效。

相关内容