MacでHerokuにYesodを(GHC/cabal-install導入編)

前回Ubuntu on VirtualBox環境を作成したので、次はGHC
更にYesod開発に必須のcabal-installもインストールしてしまいます。

GHCをインストール

ここからはUbuntu on VirtualBoxでの作業。
まず依存ライブラリをインストール。

sudo apt-get install libreadline5 libgmpxx4ldbl libgmp3c2 libgmp3-dev

次にGHCのダウロードページからGHCのバイナリをダウンロードしてきましょう。
バージョンは、今回は7.0.4を採用。
ファイル名はghc-7.0.4-x86_64-unknown-linux.tar.bz2となります。
32bit版とまちがわないように気を付けて下さい。

ダウンロードしたファイルを解凍。

tar xvf ghc-7.0.4-x86_64-unknown-linux.tar.bz2

解凍したディレクトリに降りていってインストール。

cd ghc-7.0.4
>||
./configure
sudo make install

ここでこんな↓エラーが出るかもしれません。

make -r --no-print-directory -f ghc.mk install BINDIST=YES NO_INCLUDE_DEPS=YES
mk/config.mk:28: /home/****//mk/project.mk: No such file or directory
mk/config.mk:210: /home/****//mk/install.mk: No such file or directory
ghc.mk:128: *** Please run ./configure first.  中止.
make: *** [install] エラー 2

project.mkとinstall.mkがホームディレクトリの下にないって言っています。
カレントの下のmkディレクトリにはあるので、無理矢理コピーするとうまくいきました。

mkdir ~/mk
cp ./mk/project.mk ~/mk
cp ./mk/install.mk ~/mk

cabal-installをインストール

cabal-installをインストールしますが、先に依存ライブラリをインストールする必要があります。

依存ライブラリの中にはapt-getでインストールすることが出来るものもありますが、GHC6まで一緒にインストールされてしまうようなので、HackageDBから一つ一つダウンロードしてインストールすることにしました。

インストールしたライブラリは以下の通りです。入れ子は依存関係を示しています。

  • HTTP-4000.2.2
    • network-2.3.0.8
      • parsec-3.1.2
        • text-0.11.1.12
          • deepseq-1.2.0.1
    • mtl-2.0.1.0
      • transformers-0.2.2.0
  • zlib-0.5.3.1
    • sudo apt-get install zlib1g-dev (Haskellのライブラリにあらず)

mtlはparsecのインストールにも必要なので、下からインストールして行くとOKです。

以上のライブラリをインストールしたら、cabal-installをインストールします。
Hackageからcabal-installのインストールファイルをダウンロードします。
バージョンは今回は0.10.2。
ん?0始まりっちゃーなにごと?

なおcabal-installのインストールの途中、Ubuntu on VirtualBoxが不安定になり再起動せざるを得なくなる、という現象が起きました。
これはゲストOSのメモリを増やしたら解消しました。

今回はここまで。
次はYesodのインストールです。

メモ・HackageDBからダウンロードしたライブラリのインストール手順

以下の5手。

tar xvf HackageDBからダウンロードしたファイル
cd 解凍したディレクトリ
sudo runghc Setup.hs configure

Setup.hsはSetup.lhsのこともあります。

sudo runghc Setup.hs build
sudo runghc Setup.hs install