melpon日記 - HaskellもC++もまともに扱えないへたれのページ

2012-07-31

[]cabal の使い方 22:12 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 はほとんど起こらないはずです。


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

リンク元
Connection: close