2

So I'm inside China and Github is not always accessible here.

I get this when running stack install for a project.

HttpExceptionRequest Request {
  host                 = "raw.githubusercontent.com"
  port                 = 443
  secure               = True
  requestHeaders       = [("User-Agent","The Haskell Stack")]
  path                 = "/fpco/stackage-content/master/stack/stack-setup-2.yaml"
  queryString          = ""
  method               = "GET"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
}
 (InternalException (HostCannotConnect "raw.githubusercontent.com" [Network.Socket.connect: <socket: 15>: does not exist (Connection refused)]))

I'm aware I can setup stack with proxy using http_proxy

$ export http_proxy=IP:PORT
$ stack install

But doing so implies stack would download hackages through the proxy as well, and I happen to be using the tsinghua mirror:

package-indices:
  - download-prefix: http://mirrors.tuna.tsinghua.edu.cn/hackage/
    hackage-security:
        keyids:
        - 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d
        - 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42
        - 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833
        - 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201
        - 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3
        - 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921
        - 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d
        - aa315286e6ad281ad61182235533c41e806e5a787e0b6d1e7eef3f09d137d2e9
        - fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0
        key-threshold: 3 # number of keys required

        # ignore expiration date, see https://github.com/commercialhaskell/stack/pull/4614
        ignore-expiry: no

which means I'm now accessing the Chinese mirror from a proxy in Singapore, and it is really slow.

One quick solution I have is to remove the Chinese mirror and just have everything go through the proxy. But I still want to use the Chinese mirror if it is possible.

So I'm wondering if there is a way to configure stack to use proxy only for Network stuff but not for downloading hackages?

Archy Will He 何魏奇
  • 9,589
  • 4
  • 34
  • 50
  • You could proxy to a server under your control (eg on your machine), and have that forward requests to either the proxy or to Hackage as appropriate – Benjamin Hodgson Jul 13 '20 at 14:42
  • @BenjaminHodgson oohh yeah I guess that is the best solution as of now! I'm kind of a complete beginner in proxy forwarrding so just curious what would you recommend as the best approach for this use case? Or is there any good tutorial or place to start learning about it? (currently am eyeing at glider https://github.com/nadoo/glider ) – Archy Will He 何魏奇 Jul 15 '20 at 12:55

0 Answers0