LoginSignup
11
8

More than 3 years have passed since last update.

WSL2にHaskell (Stack経由) を入れたときにハマったこと

Last updated at Posted at 2020-05-29

はじめに

先日 Windows10 May 2020 update が来て、WSL2がようやく正式版になりましたね!
そこでWSL2にHaskellを入れてみようと思ったのですが、エラーが出たのでハマったので、解決方法を忘備録として載せます。

WSL2のインストール方法はQiitaを探せばいくらでもありそうなので、ここでは紹介しません。
また、WSLとVSCodeの連携は こちらの記事 に書いたので、ぜひ読んでください!

今回私は、WSL2のUbuntu 20.04 LTSを使いました。

ハマったこと

stack setupコマンドを実行すると以下のようにエラーが出る

bash
$ stack setup
Preparing to install GHC (tinfo6) to an isolated location.
This will not interfere with any system-level installation.
Preparing to download ghc-tinfo6-8.4.4 ...
Download expectation failure: HttpExceptionRequest Request {
  host                 = "github.com"
  port                 = 443
  secure               = True
  requestHeaders       = [("User-Agent","The Haskell Stack")]
  path                 = "/commercialhaskell/ghc/releases/download/ghc-8.4.4-release/ghc-8.4.4-x86_64-fedora27-linux.tar.xz"
  queryString          = ""
  method               = "GET"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
}
 ConnectionTimeout
Preparing to download ghc-tinfo6-8.4.4 ...

解決

https://github.com/commercialhaskell/stack/issues/5063
https://docs.microsoft.com/ja-jp/windows/wsl/troubleshooting
を参考にしました。
どうやら、DNS関連の問題らしいです。

手順

DNSサーバを一時的にGoogleのものに変更します。

まず、以下を実行

bash
sudo cp /etc/resolv.conf /etc/resolv.conf.new
sudo unlink /etc/resolv.conf
sudo mv /etc/resolv.conf.new /etc/resolv.conf

/etc/resolv.conf を開いて、内容を以下のように書き換える

nameserver 8.8.8.8
nameserver 8.8.4.4

この状態でstack setupを実行することで、無事インストールできます。
インストールが終わったら、以下のコマンドで元の設定に戻しましょう。

cd /etc
sudo mv resolv.conf resolv.conf.new
sudo ln -s ../run/resolvconf/resolv.conf resolv.conf

お疲れさまでした。

最後に

インストールするだけで結構面倒でしたね。
HIEをインストールする際にも同様の問題が起きるみたいです。

また、hackageからライブラリを取ってくる時も同じ問題が起こるので、日常的にWSL2で開発するのはしんどいかもしれません

WSL2が早く成熟してくれるといいなぁ

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8