cabal の使い方

cabal は dependency hell が怖いので、こんな使い方をするのが一番いいんじゃないかなーという方法です。
毎回 cabal-dev を使うのは非常に時間が掛かるし容量も取るのですが、まあ dep hell に引っかかって時間を無駄にするよりはいいんじゃないかなーと。

cabal は cabal-dev をインストールするだけ

cabal install cabal-dev

cabal の出番はこれだけで、あとは cabal-dev を使います。

とりあえず ~/.cabal/bin へのパスは通しておきましょう。


あと、cabal install cabal-dev に失敗してしまうようなら、もうスパッと

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

とかやって、cabal 環境を綺麗にしてしまいましょう。

作りたいアプリケーションごとに cabal-dev install する

Haskell で何か作りたいと思ったら、それ用のフォルダを作り、そこで必要なパッケージを全て cabal-dev install します。

# 作りたいアプリのフォルダへ移動
mkdir app
cd app

# 依存するライブラリ達を cabal-dev install する
cabal-dev install conduit

ここで依存するパッケージを複数入れようとしてコンフリクトしたら、まあ、その、……ご愁傷さまです。

例: Yesod アプリケーションを作る

# yesod init する用のバイナリを作る
# (どこに作ってもいいけどとりあえず ~/cabal-dev/yesod に作ることにする)
mkdir ~/cabal-dev
mkdir ~/cabal-dev/yesod
cabal-dev install --sandbox=~/cabal-dev/yesod
# インストールが終わるまでかなり待つ

# yesod init する
cabal-dev/yesod/bin/yesod init
# ここで hoge という Web アプリを作ったとする

# hoge を cabal-dev install する
cd hoge
cabal-dev install
# インストールが終わるまでかなり待つ

# デバッグ実行
cabal-dev/bin/yesod --dev devel

こんな風にすればインストールでかなり時間を取るものの、dep hell はほとんど起こらないはずです。


これがちゃんとした運用かどうかは知りませんが、こうすれば大分心安らかにパッケージをインストールできるので、みんな試してみましょう。