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