なんちゃってvimmerな私。
最近はAtomというエディターをvimモードで使っています。
Atomのいいところは、Packageが充実しているところと、そしてなによりvimの補完よりもはるかに(私のvimプラグインが脆弱なのかもしれないけど)Atomの補完の方が強力なところです。
さて、最近Haskellの勉強をはじめました。
いいHaskell環境をAtom (or Vim)で構築したいということでやってみましたが、結構難儀したので手順をまとめておきます。
- ghc-modを使いたいがインストール手順がわからない
- ネットで調べた手順でインストールし、PATHも通してるのに機能しない
- Atomの
haskell-ghc-mod
プラグインがspawn ghc-mod ENOENT
というエラーを吐く
などでお困りの方に向けた記事です。
なお、私の環境としては、
- Mac OSX Yosemite (10.10.5)
- bashじゃなくてzshつかってます。
- vim 7.4.769
- Atom 1.1.0
Haskellの導入
Glasgow Haskell Compiler、いわゆるGHCをインストールします。
こちらの記事を参考にしました。
基本的には、こちらの記事の通りに進めていきます。
手順0 クリーンアンインストール(必要な場合のみ)
私はすでにGHCを入れていたので、クリーンアンインストールをしました。
上記引用サイトの通り、私の場合も/usr/local/bin
と/usr/local/lib
の2ヶ所にGHC関係のファイルは入っていたようなので、
/usr/local/bin
で
$ ls -l | grep ghc
/usr/local/lib
で
$ ls -l | grep ghc
とそれぞれやって関連ファイルを確認したのち、
$ sudo rm -rf ghc-7.8.3
とかこんな感じで関連ファイルを削除していきました。
さらに~/.ghc
と~/.cabal
も同様に削除します。
シェルで
$ ghc
bash: ghc: command not found
$ cabal
bash: cabal: command not found
と出たらアンインストール完了です。
手順1 GHC, GHCiのインストール
次に、新しくGHCをインストールしていきましょう。
アーカイブをダウンロードして解凍していきます。
$ curl -O http://downloads.haskell.org/~ghc/7.10.2/ghc-7.10.2-x86_64-apple-darwin.tar.xz
$ tar -xvzf ghc-7.10.2-x86_64-apple-darwin.tar.xz
$ cd ghc-7.10.2
ここで、先ほどのサイトのアドバイス通り、--prefixオプションをつけてインストールすることにします。
私の場合はsudoをつけないと--prefixオプションなんかてめぇが使うんじゃねぇって怒られました笑
$sudo ./configure --prefix=/usr/local/ghc-7.10.2
$sudo make install
次に/usr/local/ghc-7.10.2/bin
のフォルダにパスを通すのですが、.zsh_profile
でexport PATHみたいなことしても機能しなくて、私の場合は.zshrc
の中で次の一行を追加しました。
export PATH="/usr/local/ghc-7.10.2/bin:$PATH"
最後に、確認。
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.2
ちゃんと出てきたら、GHCはインストールできたことになります。
関連パッケージのインストール
cabalのインストール
$ curl -O https://hackage.haskell.org/package/cabal-install-1.22.6.0/cabal-install-1.22.6.0.tar.gz
$ tar -xzf cabal-install-1.22.6.0.tar.gz
$ cd cabal-install-1.22.6.0
$ sudo ./bootstrap.sh
$ sudo cabal update
その他
$ cabal install happy
$ cabal install hlint
でその他必要なものもインストール完了です。
基本的に、ここまでのことはわりとすんなりいくはずです。
ghc-modのインストール
さて、ここからが本題です。
ghc-modを使いたいうまくインストールできない、という人がいっぱいいるらしく、少しググるだけでghc-modのインストール方法はけっこう出てきます。
しかし、私の場合はそれをやってもうまくいきませんでした。
これも、はじめに参考にしたのは先ほど紹介したのと同じ方が書いてるこちらの記事。
要するに、ふつうに$ cabal install ghc-mod
とやってもうまくインストールできないよ、ということですね。
上記サイトによると、
- gitをclone
- ローカルビルド
とすればうまくいくと書いてありますが、私の場合はこれではうまくいきませんでした!
ということで、ここからがこの記事の本領です笑
まずは指示通りにgit cloneしてローカルビルド
$ git clone https://github.com/kazu-yamamoto/ghc-mod.git
(注) 参考サイトの通り、$ git clone git@github.com:kazu-yamamoto/ghc-mod.git
だと、私の場合はエラーが出てダメでした汗
そしてローカルビルドしましょう。
$ cd ghc-mod
$ cabal install
なにがダメなのか?
上記の通りビルドしたバイナリは、本来なら~/.cabal/bin
に配置されるようなのですが、私の場合はホームディレクトリ直下にghc-mod
フォルダが作られていました。
だからでしょうか、.vimrc
でPATHをちゃんと指定してもvimでghc-modが使えません。
もちろん、AtomにHaskell用のPackageを入れてもエラーで動いてくれません。
cabalで再インストールするとなぜか直る!
次のコマンドを叩いて再インストールすると、なぜかうまくいくようになります汗
$ sudo cabal install --reinstall --force-reinstalls ghc-mod
ためしに、type
してみましょう。
$ type ghc-mod
ghc-mod is ~/.cabal/bin//ghc-mod
おおーなぜかはわかりませんが、ちゃんと~/.cabal/bin
に配置されています!
Atom側の設定
これでghc-modが入ったので、エディターの設定をしていきましょう。
各種Packageのインストール
AtomでHaskellをいじるときに入っていると便利なPackageは、こちら(atom.io) にある6つ+他1つくらいでしょうかね。
リストアップすると、
- language-haskell
- autocomplete-haskell
- haskell-ghc-mod
- ide-haskell
- ide-haskell-cabal
- ide-haskell-repl
- haskell-pointfree
haskell-ghc-mod パッケージの設定
特に、今回入れるのに苦労したghc-mod
なわけですが、haskell-ghc-mod
プラグインの設定画面でちゃんとghc-mod
とghc-modi
のパスを設定しないとこのプラグインは使えません。
パスはさっきのtype
コマンドを使って、$ type ghc-mod
とか$ type ghc-modi
とやると特定することができます。
vimのケース
力尽きました笑
ghcmod-vim
というのがあるのでそれを使っています。
ググればこちらの使い方はたくさん出てくるとおもいます。
作者のサイトリンクだけ貼っときます。
まとめ!
要するに、
- Webで出てるみたいにインストールしてるのにghc-modが使えねぇ!なんでだ!
- 正攻法でインストールしたあと、再インストールするとうまくいくぜ!
ということを伝える記事でした。
ここらへんの内容がまとまって書いてあるサイトも記事も見当たらなかったので書いてみました。どなたかの参考になれば幸いです。