雑記帳

ちょっとした文章とかメモ書きとか。

hsenvで複数の切り替え可能なghc環境を整える

RubyでいうrbenvのようなツールはもちろんHaskellにもあります。hsenvですね。

これは$HSENV_ROOT/bin/activateスクリプトにより独立したghc環境を作るものです。

rbenvの時とは少し作法が違うので注意してください。

hsenvの場合は、hsenvを実行したディレクトリに.hsenvが掘られ、そこにghc環境が新たに作成されます。使い方によってはcabal sandboxと被ってしまいますが、今回は異なるghc環境の切り替え用途で使ってみます。hsenvは$PATHで指定されているディレクトリに既に有るものとします。

$ mkdir ~/.haskell
$ cd ~/.haskell
$ hsenv --ghc=<ghc tarball>.tar.gz

とする事により、新たなhsenvによるghc環境が~/.haskell/.hsenv以下に作成されます。

例えば、ghc-7.8.2をhsenvを使った切り替え可能なghc環境としてインストールするとしたら次のようになります。

$ wget https://www.haskell.org/ghc/dist/7.8.2/ghc-7.8.2-<architecture & OS type>.tar.gz

としてghc-7.8.2のtarballをダウンロードしておき、

$ mkdir -p ~/.haskell/hsenv/ghc-7.8.2
$ cd ~/.haskell/hsenv/ghc-7.8.2
$ hsenv --ghc=<path to ghc-7.8.2 tarball>

とすると~/.haskell/hsenv/ghc-7.8.2の下にghc-7.8.2環境が作られます。

$ source ~/.haskell/hsenv/ghc-7.8.2/.hsenv/bin/activate

とすればこの作成した環境に切り替えられます。

これを、例えば~/.bash_aliases~/.zshenvなどに

alias hsenva='source ~/.haskell/hsenv/ghc-7.8.2/.hsenv/bin/activate'

みたいにしておけば環境の切り替えも楽に行えます。hsenvaはhsenv activateの略のつもりです
今回はghcを一つだけhsenvでインストールしたのですが、例えば

$ ~/.haskell/hsenv/ghc-<version>

のようなバージョニングルールを決めておけば、
複数のhsenvでインストールしたghc環境がどれがどれだったか分からなくなる事がなくなると思います。

hsenvにより新しいghc環境を作成した後、cabal sandbox init後に依存ライブラリを入れるようにすればより快適なHaskell開発環境が手に入ると思います。お試しあれ。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。