Saturday 15 March 2014

ghc-mod のインストールに失敗するアレ

ghc-mod という haskell のパッケージがある.
ghcmod-vim というプラグインと併用したりすると Vim で Haskell 書くときに かなり便利できるらしい.emacs とかでもよしなにアレできるようだ,ということでインストールしようとすると,どこでもこう書いてあるコマンド

$ cabal install ghc-mod
で,
ずらずらずら……
setup: The program happy version >=1.17 is required but it could not be found.
Failed to install haskell-src-exts-1.14.0.1
cabal: Error: some packages failed to install:
ghc-mod-3.1.6 depends on haskell-src-exts-1.14.0.1 which failed to install.
haskell-src-exts-1.14.0.1 failed during the configure step. The exception was:
ExitFailure 1
hlint-1.8.59 depends on haskell-src-exts-1.14.0.1 which failed to install.
となってしまう話.

 ふーむそれならば

$ cabal install haskell-src-exts
つらつら

setup: The program happy version >=1.17 is required but it could not be found.
Failed to install haskell-src-exts-1.14.0.1
cabal: Error: some packages failed to install:
haskell-src-exts-1.14.0.1 failed during the configure step. The exception was:
ExitFailure 1
ふーむなるほど.happy ってのは Happy: The Parser Generator for Haskell というやつらしく, stackoverflow でもいろんなパッケージが依存してるのでとりあえず入れとくと良かったりするぜみたいなことが書かれている
そこで

$ cabal install happy
...
..
.
Installed happy-1.19.3

これで勇んでさっきと同じく

$ cabal install ghc-mod
とやると同様のエラーで落ちるのだが,これは結局 cabal のインストール先が path に入ってないので,ということらしく (thanks: stackoverflow),

export PATH="$HOME/.cabal/bin:$PATH"
(僕の環境では)してからこんどこそよろしくおねがいしまーす

$ cabal install ghc-mod
Resolving dependencies...
[1 of 1] Compiling Main             ( /tmp/haskell-src-exts-1.14.0.1-15273/haskell-src-exts-1.14.0.1/Setup.hs, /tmp/haskell-src-exts-1.14.0.1-15273/haskell-src-exts-1.14.0.1/dist/setup/Main.o )
Linking /tmp/haskell-src-exts-1.14.0.1-15273/haskell-src-exts-1.14.0.1/dist/setup/setup ...
Configuring haskell-src-exts-1.14.0.1...
Building haskell-src-exts-1.14.0.1...
Preprocessing library haskell-src-exts-1.14.0.1...
[ 1 of 22] Compiling Language.Haskell.Exts.Annotated.Syntax ( src/Language/Haskell/Exts/Annotated/Syntax.hs, dist/build/Language/Haskell/Exts/Annotated/Syntax.o )
おっいい感じかな?

Preprocessing executable 'hlint' for hlint-1.8.59...
なんか良さげな感じを経て

Installed ghc-mod-3.1.6
ありがとうございました.
Happy がなぜ依存関係として勝手にインストールされなかったのかには少し疑問がある,なんでなんだろう.案外最初に path 通しとけば全部うまく行ったのかもという気も微かにするが.
で,上記の通り少なくとも Happy 入れるとあとはさっくり行けてしまったので,「ghc-mod インストールしよう」系の記事に言及がないのは,こうやって意識されないからなのかもしれませんね.Python のパッケージ入れるときとかに python-dev への依存を言及しないみたいな感じで.しらんけど.
8May2014 追記:
$ sudo cabal でやると, ubuntu の sudo の仕様により $PATH が変わって上記のようにやっても happy がないかのように振る舞います.

No comments:

Post a Comment