読者です 読者をやめる 読者になる 読者になる

YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

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

Haskell

動機

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 のエラーが出てしまいます。