Vine Linux 5.x での Haskell についての備忘録。
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で最新のものにアップグレードできる。