2015-08-09:この記事にはアップグレード版があります
この記事の入れ方は今は推奨しません。上記の新しい版を参照してください。
あけまして
あけましておめでとうございます。5日はブログにまとめようと思っているオセロのAIの開発の方にかまけて更新が滞っております。
cabal hell!
IntelliJでHaskellを書いているとだんだんと動作がおかしくなってきて、cabal sandbox delete -> cabal sandbox initしてコマンドラインでcabal buildする回数が多くなってきます。ついにghc-modiが動かなくなってIntelliJ上で型が表示されなくなり…詰みです。
これはcabal hellと呼ばれる現象でぐっちゃぐっちゃになった依存関係の成れの果てです。ぐちゃぐちゃの程度は色々あるでしょうが、動かないことに変わりはありません。
というわけで全部消してもう一度やり直してみます。
前回の入れ方は
Haskell + IntelliJ IDEAでゆるくHaskell入門する手始め - euphonictechnologies’s diary
という感じで、brew install + cabal installでした。この入れ方は2014年までです。2015年はもっときれいな入れ方をしましょう。 なので、まず消します。
$ brew uninstall ghc $ brew uninstall cabal-install
という感じ。さらに/usr/local/Cellarの中身でghcに関係ありそうなものを削除して綺麗にします。 次に
$ ghc-pkg list
して、すべてのpackage.conf.dをそのディレクトリごと削除します。
さらに~/.cabalの中身と~/.ghcの中身をすべて削除してそれら全てを綺麗にします。
これで綺麗になっているはずです。
ghcをインストールする
brewでインストールするのはもう古い。自力でダウンロードしてインストールしましょう。基本的にはこれに従ってインストールしてきます。
Installing GHC 7.6.1 on Mac OS X 10.8 Mountain Lion · GitHub
または
Mac OS X 10.8にGHC+cabal-installの環境を作る - Keep on moving
GHCのページにバイナリがあるのでそれをダウンロードします。
次に、上の解説通りアーカイブを解凍してconfigureしてmake installしましょう。ghcが通るようになるので
$ echo "module Main where main = do print \"Hello, world.\"" > hello.hs $ cat hello.hs module Main where main = do print "Hello, world." $ ghc hello.hs [1 of 1] Compiling Main ( hello.hs, hello.o ) Linking hello ... $ ./hello "Hello, world."
でインストールを確認しましょう。
cabal-installのインストール。
引き続き上の解説通りインストールしていきます。パッケージをダウンロードしたらその中のbootstrap.shを実行します。
ここできちんとghc-pkgが綺麗になっていないとおそらく失敗します。ghc-pkg check
して何も表示されないことを確認しておくと良いかもしれません。
あとは~/.cabal/binにパスを通してcabal updateするだけです。
これがおそらく一番きれいなインストール方法。また汚くなったらバッサリrmしていきましょう。あと絶対にsandboxを使うこと。これに限ります。