Happstackを試そうとしたらインストールではまった

haskellのweb frameworkとして Happstack(http://happstack.com/index.html)というものがあるらしく試そうとしても失敗してあきらめてたのですが、いろいろやってみたらインストールできたのでメモしておきます。


使用した環境

上記の環境以外の場合はすんなりインストールできるかもしれません。
やることとしては

$ ghc-pkg hide directory
$ ghc-pkg hide filepath

となります。
なにやらdirectoryとfilepathはふたつよみこまれてしまうようで、haskell platformについてきた directoryとfilepathを無効にしておけばよいです。

ついでに調べててわかったことですが、 .cabal を削除するだけだとインストールされていると認識されるようでそちらは .ghc に保存されてるようです。
がっつり削除したくなった場合は

$ rm -rf ~/.cabal
$ rm -rf ~/.ghc

などとしておくといままでしたことがなかったことにできるようです。

そのあとに

$ ghc-pkg hide directory
$ ghc-pkg hide filepath
$ cabal update
$ cabal install happstack

とするとインストールできました。
本家にサンプルも動作しました。

詳細

エラーの内容を保存しわすれた orz

GHCi runtime linker: fatal error: I found a duplicate definition for symbol___hscore_S_IFDIR

上記のようなシンボルが2度登場してるのが原因っぽくてログをよくみてみると
directoryとfilepathという一部のパッケージが古いversionに依存していて新しいものと古いものの両方を読みこんでしまうようでした。

なので上記にかいたとおり無効にして対処したというわけです。