Question

My Linux(redhat6) server has to use http proxy to connect to outside world. While it works for other things like wget, it doesn't work for cabal.

cabal update -v3

shows errors like this:

407 - proxy authentication required cabal: Failed to download http://hackage.haskell.org/packages/archive/00-index.tar.gz : ErrorMisc "Unsucessful HTTP code: 407"

I tried to change http_proxy environment variable to format like http:// user: passwd at proxy:port, but it doesn't work either.

The same problem has been asked here

But I'm not allowed use a proxy server like polipo, is there any other way to make cabal work behind a proxy?

Was it helpful?

Solution

You can use cntlm to talk to proxy. It will handle authentication issues. After configuring and installing cntlm, set up the new environmental variable by modifying http_proxy, https_proxy etc.

Your cabal command should work after that.

OTHER TIPS

some detailed procedure here:

  1. Download cntlm from here It's a c program with no other dependencies so very easy to make, just follow the instructions in the downloaded package.

  2. After installing cntlm, follow this answer from Colonel Panic. Obviously on linux you need to change cntlm.exe to ./cntlm, I named the configure file cntlm.conf

  3. The default listen port for cntlm is 3124, if you can't use that port, change it to something else like 53124, then add this to your cntlm.conf or cntlm.ini file:

    Listen              127.0.0.1:53124
    

  4. Start cntlm in the background:

    
    ./cntlm -c cntlm.conf
    

  5. Change your http_proxy environment variable to talk to the cntlm process rather than the real proxy.

    
    export http_proxy=http:// 127.0.0.1:53124
    

That's it, cabal will work as good as ever.

You can also setup the http_proxy directly in the system setting:

http_proxy=http://username:password@hostname:port
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top