[モチベーション]
Haskell のコンパイラのデファクトスタンダードである GHC は、わりと頻繁に新しいバージョンがリリースされている。
開発が活発なのは利用者としてはうれしいことだが、Haskell Platform や 各ディストリビューションのパッケージ管理システムを使って環境を構築していると、各バージョンのGHCを切り替えて使うことが難しく、それが作業の妨げになることがある。
GHCのバイナリパッケージを自分でインストールしてPATHの設定も自分で行っておくと各バージョンの切り替えが可能となる。
自前構築は面倒なイメージがあるが、ポイントを押さえれば意外と簡単なのでここで共有する。
今回は “CentOS 7 編”だ。x86_64版が最小構成でインストールされていると仮定する。
Haskell Platform や パッケージ管理システムを使わずに GHC と Cabal をインストールする – Debian 8 (Jessie) 編
[概要]
下記を行うための手順を示す。
1. GHCのバイナリパッケージのインストール
GHCのバイナリパッケージを /usr/local/apps/ にインストールする。
下記のように複数バージョンを保持する前提。
/usr/local/apps/ghc-7.6.3
/usr/local/apps/ghc-7.8.4
/usr/local/apps/ghc-7.10.1
/usr/local/apps/ghc-7.10.2
2. cabalコマンドのビルド
公式サイトから落としてきた cabal コマンドを使用して自前のcabalコマンドをビルドする。
[1. GHCのバイナリパッケージのインストール]
GHCのバイナリパッケージは下記のサイトで公開されている。
https://www.haskell.org/ghc/
Debian版 と CentOS版があるが、依存しているGMPライブラリのバージョンがキモとなるため、CentOS 7 では Debian版を使用する。
https://www.haskell.org/ghc/download_ghc_7_10_2#x86_64linux
gcc と perl が必要なのでインストールしておく。
gmp-devel は ghci の実行時に必要となるので一緒に入れておく。
*.tar.bz2 を解凍するために、bzip2もここでいれておく。
バイナリパッケージをダウンロードする。
tar ボールを解凍して、解凍先に cd する。
bzip2がないと、このときエラーになる。
$ cd ghc-7.10.2
インストール先を指定して configure する。
gcc や perl がないと、このときエラーになる。
管理者権限で make install
下記のように、PATHを追加する。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
PATH=$PATH:/usr/local/apps/ghc-7.10.2/bin
export PATH
PATHの追加を反映。(ログインしなおしてもよい)
ghci を起動して下記のように動作すれば成功。
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> 1 + 2 + 3
6
Prelude> :q
Leaving GHCi.
[2. cabalコマンドのビルド]
パッケージ名としてはCabalのライブラリがcabal、cabalコマンドがcabal-installとなっている。
cabal-installのバイナリビルドは下記のサイトで公開されているが、Linux版は32bit版のみの為、64bit環境で動作させるには、少し工夫が必要になる。
https://www.haskell.org/cabal/download.html
glibc.i686、zlib.i686、gmp.i686 は 32bit版のcabalの動作に必要なパッケージ。
zlib-devel は自前の64bit版のcabalをビルドするときに必要なのでここで入れておく。
バイナリビルドをダウンロードする。
tar ボールを解凍すると cabal という名前のファイルが生成される。これが32bit版 cabalコマンド。
cabal のパッケージ情報を更新(ダウンロード)する。
自分の cabal コマンドをビルドする。~/.cabal/bin にインストールされる。
下記のように、PATHを追加する。
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
PATH=$PATH:/usr/local/apps/ghc-7.10.2/bin
PATH=$PATH:~/.cabal/bin
export PATH
PATHの追加を反映。(ログインしなおしてもよい)
自分の cabal が参照されれば成功。
/home/administrator/.cabal/bin/cabal