YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

Mac OS X 10.6 でcabal-installを設定する

動機

HaskellをむりやりSnow Leopardで動くようにしたのはいいけれど、cabalがないと面倒なので設定した。

前提

Haskellでは同じ発音をする、"Cabal"と"cabal"があります。2者は大きく違います。注意。

Cabal

Haskellで書かれたパッケージ用のmakeみたいなもの。パッケージ内にはSetup.lhsやSetup.hsというビルド用のファイルがあるので基本的には下記の流れでインストール。

$ runhaskell Setup configure
$ runhaskell Setup build
$ sudo runhaskell Setup install

詳しくはhelpを見てください。(runhaskell Setup --help)

cabal (cabal-install)

Haskell向けのパッケージ管理システム。Pythonのeasy_install、PerlのCPAN、Rubyのgemsみたいなもの。パッケージHOGEを探してインストールする場合は下記。

$ cabal list HOGE
$ cabal install HOGE

インストール方法

まず前提としてGHCをSnow Leopardで動くようにしておく。

その後ここを参考にしてSnow Leopardで無理やり動かすように各種パッケージを設定。

以下パッケージのバージョンは執筆時のものです。またいずれはMacPortsでもHaskellのもろもろをゴリっと対応してくれると思うので、今だけのwork aroundです。
まずは一番最初に必要なCabalのインストール。

$ curl -O http://hackage.haskell.org/packages/archive/Cabal/1.8.0.2/Cabal-1.8.0.2.tar.gz
$ tar xzf Cabal-1.8.0.2.tar.gz
$ cd Cabal-1.8.0.2
$ ghc --make Setup
$ ./Setup configure -p --ld-options="-arch i386" --gcc-option=-m32
$ ./Setup build
$ sudo ./Setup install

次はHTTPのセットアップ。

$ curl -O http://hackage.haskell.org/packages/archive/HTTP/4000.0.9/HTTP-4000.0.9.tar.gz
$ tar xzf HTTP-4000.0.9.tar.gz
$ cd HTTP-4000.0.9
$ runhaskell Setup configure  -p --ld-options="-arch i386" --gcc-option=-m32
$ runhaskell Setup build
$ sudo runhaskell Setup install

そしてzlibのセットアップ。

$ curl -O http://hackage.haskell.org/packages/archive/zlib/0.5.2.0/zlib-0.5.2.0.tar.gz
$ tar xzf zlib-0.5.2.0.tar.gz
$ cd zlib-0.5.2.0
$ runhaskell Setup configure -p --ld-options="-arch i386" --gcc-option=-m32
$ runhaskell Setup build
$ runhaskell Setup install

準備が終わったのでcabal-installをHackageからダウンロード。

$ curl -O http://hackage.haskell.org/packages/archive/cabal-install/0.8.0/cabal-install-0.8.0.tar.gz
$ tar xzf cabal-install-0.8.0.tar.gz
$ cd cabal-install-0.8.0
$ runhaskell Setup configure -p --ld-options="-arch i386" --gcc-option=-m32
$ runhaskell Setup build
$ runhaskell Setup install

おまけ

最初は「こんなん余裕だろ」と思ってたんですが、cabal-installをbootstrap.shでインストールすると、cabalを起動したときに Codec.Compression.Zlib のエラーが出てしまいます。