[ホーム]-> [haskell]

Haskell

Vine Linux 5.x での Haskell についての備忘録。

ghc

GHCは Haskell のコンパイラだが, Haskell で書かれているので,自分でビルドするのは少々面倒。つまり ghc をビルドしようとすると,まず ghc が必要だと言われる。 今使っている Linux のディストリビューションの Vine Linux では ghc の rpm は用意されていないので、取り敢えず一般ののバイナリを取ってきて, それを使ってビルドすることになる。

具体的には,上のページからたどって ghc-6.x.x-i386-unknown-linux-n.tar.bz2 を取ってきて展開し、

mkdir work
./configure --prefix=$HOME/work
make
make install
すると、取り敢えず ghc が使えるようになる。(インストールするディレクトリは後から消しやすいところを選んだ。)

次に、

apt-get install readline4 openal-devel docbook-utils docbook-style-xsl gmp-devel
などとして必要なライブラリをインストールしてから ghc をコンパイルすることになる。 このとき、何かまともなことをしようとすると extralibs を入れておきたくなる。しかしその場合は mtl とか happy が必要になる。これらも ghc がないとビルドできないので面倒だ。

まず ghc をインストールした先をパスに含めておく。bash を使っているなら

export PATH=$PATH:$HOME/work/bin
次に mtl (monad transformer library) と happy とを取ってくる。それぞれ展開して
cd mtl-1.1.0.2
runhaskell Setup.hs configure
runhaskell Setup.hs build
sudo runhaskell Setup.hs install
happy-1.18.4
runhaskell Setup.lhs configure
runhaskell Setup.lhs build
sudo runhaskell Setup.hs install
でインストールできる。なお、happy は mtl がないとビルドできないので先に mtl をインストールする。また sudo で runhaskell がないと言われたら直接パスを指定して実行する。上のようにした場合、どちらも /usr/local 以下にインストールされる。mtl は ghc を extralibs 付きでコンパイル、インストールしたなら消してもよいはず。

また xmltex も必要とか言われるが、これも Vine には用意されていないっぽいので自分で (好みで rpm を作成して) インストールしておく。

以上でやっと ghc がコンパイルできる。 ghc-6.x.x-src.tar.bz2および ghc-6.x.x-src-extralibs.tar.bz2 を展開する。展開したディレクトリで

./configure --with-ghc=$HOME/work/bin/ghc
make LANG=C
のようにすればよい。make の際、LANG=C をつけないと、Apply.o で lexical error とかがでた。コンパイルには割と最近のパソコンでも1時間から2時間かかる。

なお、ghc-6.10.x からは多くパッケージが haskell-platform の方に移動し、ghc 本体はシンプルなものになっている。extralibs もなくなった。haskell-platform は cabal でインストールできるものも用意されており、ウェブページを見て指示に従えば問題なくインストールできた。

なお、私の場合は野良ビルドの rpm を作って一度インストールし、次に spec ファイルの configure のオプションの --with-ghc=$HOME/work/bin/ghc を消してから rpm を作り直したりしたので、更に工程が一つ増えた。rpm パッケージをインストールしたら、$HOME/work 以下の ghc は消しておく。

以上のような感じでできたパッケージを取り敢えず置いておく。その際に必要になった xmltex なども置いておく。依存関係はあまりきちんとチェックしていないので、気になる方は spec ファイルを書き直して下さい。mtl は行列のライブラリと名前がバッティングするので、HSmtl という名前にしています。

Haskell を使うようになると、ruby の rubygem とかにあたる cabal が欲しくなる。 Cabal はライブラリ、cabal は cabal-install の実行ファイル名。 上のサイトから cabal-install-0.8.0.tar.gzを取ってきて展開し、ネットにつながっている状態で ./bootstrap.sh を実行すると、必要なものをダウンロード、コンパイルして cabal をビルドしてくれる。 デフォルトでは $HOME/.cabal/bin の下にインストールされるので、ここにパスを通すか、パスの通った場所に移動する。

以降は Hackage にある Haskell 関係のライブラリなどは (cabal 自身も含めて) cabal で管理すればよいので rpm にはしない。使い方だが、

cabal update
しておいてから、例えば
cabal install darcs
とすると darcs がインストールされる。
cabal upgrade
で最新のものにアップグレードできる。


[ホーム]->[haskell]