euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

Haskell - 2015年のMac + Haskell + IntelliJことはじめ、あるいはghcの再インストール

2015-08-09:この記事にはアップグレード版があります

blog.euphonictech.com

この記事の入れ方は今は推奨しません。上記の新しい版を参照してください。

あけまして

あけましておめでとうございます。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のページにバイナリがあるのでそれをダウンロードします。

GHC: Download version 7.8.3

次に、上の解説通りアーカイブを解凍して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を使うこと。これに限ります。