既出の記事をまとめただけではあるものの、初心者がそれぞれの記事単体で進めるとハマることもあったのでメモとして残しておく。もし次に書いた要件と同じ境遇の方がいれば、役に立つのではないか。
具体的な要件
- 既にインストールしているHaskell Platform を入れ直して
- Stackage を活用して依存地獄を回避したい
- Stackage のバージョンごとに開発を進める可能性もあるのでそれを考慮して
- Yesod をインストールしたい
Haskell Platform のアンインストール
Haskell Platform の利用は控えた方が良いという説明がある。
Wht not Haskell Platform?
- On Windows, it does not provide a complete environment (missing MSYS).
- By placing a large number of packages in the global package database, Haskell Platform installations are more easily corrupted.
- The choice of package versions conflicts with the needs of many commonly used packages.
- Some of the package versions included with the platform have known and severe bugs, and cannot be reliably upgraded.
ということでHaskell を触り始めたときには何も考えずにHaskell Platform を導入したので、一旦アンインストールする。
Haskell Platform for Mac OS X
Haskell Platformをアンインストールして綺麗な環境を取り戻す
Stackage の活用と、 Haskell の再インストール
Stackage
LTS Haskell 2.3, GHC 7.8.4
Haskell for Mac OSX
このメモを書いている時点では、LTS 2. 3のバージョンとなっていてGHC 7.8.4 を使うように指示があるので、そのバージョンのビルドをダウンロードする。落とした.appファイルを実行すると、チェックリスト的な画面が表示されて次の状況を教えてくれるので適宜対処する。
- 環境変数の編集の仕方
- Xcode がインストールされているか
- 実行環境 ( .appファイル以下 ) が一時フォルダなどに置かれていないか
- ghc コマンドにパスが通っているかどうか
Sandbox と Stackage (LTS Haskell)を組み合わせて使う
この記事にとても詳しく書いてある。
cabal sandbox + LTS Haskell
ポイントは、
Stackage のバージョンごとに sandbox を作り、共有すれば良い
というところだ。
Yesod のインストール
ここまでの準備が終わっていれば、インストールは 一直線 にできる。公式サイトにかいてある通りに進める。
終わりに
本件にはハマった時間も含めて5時間ほどかかった。何がどうハマったかというと、詳しくは忘れてしまったのだが
-
cabal install
の使い方 - GHCの最新版(7.10.1)は利用できない
- sandbox化するタイミング
といったあたりだろうか。中でも cabal install
については、空のプロジェクトフォルダでは実行できなくて、どうすればよいか迷った。.cabal ファイルが無い状態ではこのコマンドは使えないので、今回のケースではYesodプロジェクトを作ってから実行する必要がある。