Haskell PlatformをUbuntu 13.04に導入する
あらまし
本来Ubuntuでは最新にこだわりさえしなければ
sudo apt-get install haskell-platform
で済むのだが、今回13.04 raringを今日2013年6月1日に導入するという事態に関して言うと最大限面倒。
- Haskell Platformは現在のバージョンが2013.2なのだが、13.04リリース時はひとつ前のものでghc 7.6に対応していなかった。にもかかわらずUbuntuはghc 7.4ではなくghc 7.6をパッケージとして採用したためにHaskell Platformが収録されないというふざけた事態に。
- しかもその肝心のghc 7.6は7.6.2で、haskell platformの導入要件である7.6.3を満たしていなかった。ghcから入れる必要がある。
- ghcのバイナリパッケージはgmp10じゃなくてgmp3に依存するので使えない。
要はどっちもソースから入れないといけないわけですね。bootstrapのGHCあるだけマシか…
つべこべ言ってないでGHCをビルドする
まずは下ごしらえをしよう
# 依存ライブラリを事前に導入, ghcもbootstrapに必要なので導入 sudo apt-get install devscripts equivs build-essentials ghc # これでghc依存のライブラリをまとめたdebができる mk-build-deps ghc # これをインストールすればいいんだけど、dpkgは依存の解析をしないのでコケる sudo dpkg -i ghc-build-deps_7.6.2-1ubuntu1_amd64.deb # で、apt-getで修復をかけると依存するライブラリが全部ごっそり入る sudo apt-get install -f
ではいよいよビルドだ。
tar xf ghc-7.6.3-src.tar.bz2 cd ghc-7.6.3 ./configure --prefix=/usr/local/opt/ghc-7.6.3 make sudo make install
今思えば/usr/localに直接放り込んだほうが早かったが、後の祭りである。
Haskell Platformの導入
# 何故かは知らないがOpenGLが必要らしい sudo apt-get install freeglut3-dev ./configure --with-ghc=/usr/local/opt/ghc-7.6.3/bin/ghc --with-ghc-pkg=/usr/local/opt/ghc-7.6.3/bin/ghc-pkg --with-hsc2hs=/usr/local/opt/ghc-7.6.3/bin/hsc2hs make sudo make install
シンボリックリンク
なぜかGHCを変なところに入れてしまったのでリンクを貼っておく。
for i in /usr/local/opt/ghc-7.6.3/bin/*; do sudo ln -s $i /usr/local/bin/`basename $i` done
hsenv導入
依存関係の衝突が一番怖いので、とりあえずhsenvを入れておいて、アプリケーションごとに違う環境を使おう
cabal install hsenv