euphonictechnologies’s diary

Haskell超初心者の日記です。OCamlが好きです。

follow us in feedly

Haskell :: GHCを再インストールでアップグレードする - Mac + Haskell + IntelliJ環境構築

前回の入れ方はなかったことに

blog.euphonictech.com

この方法はやっぱなしで。再インストール時に若干面倒なことになったので、もう少しちゃんと入れることにします。

今回は、前回の方法(つまり、./configureとmake installで普通に入れた方法)で入れたghcを消して、ちゃんとした方法で入れなおします。

まずはghc-7.8.3を綺麗に消す

GHCのサイトから7.8.3のMac用バイナリをダウンロードして中身を見てみます。するとconfigureに

By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.

て事なので、binとlibにしかインストールしないようです。

見てみると:

/usr/local/bin

$ ls -l | grep ghc | grep -v arm | grep -v i386
lrwxr-xr-x  1 root       admin      9 Jan 20  2015 ghc -> ghc-7.8.3
-rwxr-xr-x  1 root       admin    262 Jan 20  2015 ghc-7.8.3
lrwxr-xr-x  1 root       admin     13 Jan 20  2015 ghc-pkg -> ghc-pkg-7.8.3
-rwxr-xr-x  1 root       admin    294 Jan 20  2015 ghc-pkg-7.8.3
lrwxr-xr-x  1 root       admin     10 Jan 20  2015 ghci -> ghci-7.8.3
-rwxr-xr-x  1 root       admin     66 Jan 20  2015 ghci-7.8.3
lrwxr-xr-x  1 root       admin     17 Jan 20  2015 haddock -> haddock-ghc-7.8.3
-rwxr-xr-x  1 root       admin    253 Jan 20  2015 haddock-ghc-7.8.3
lrwxr-xr-x  1 root       admin     12 Jan 26  2015 runghc -> runghc-7.8.3
-rwxr-xr-x  1 root       admin    245 Jan 20  2015 runghc-7.8.3
lrwxr-xr-x  1 root       admin      6 Jan 26  2015 runhaskell -> runghc

で、

/usr/local/lib

$ ls -l | grep ghc | grep -v arm | grep -v i386
drwxr-xr-x  44 username  admin    1496 Jan 20  2015 ghc-7.8.3

てことなのでこれらを全部削除します。GHC iOSやってたのでarmとかi386とか用のコンパイラも入っているのですが、それらはきちんと避けて消しましょう。

/usr/local/libで

$ sudo rm -rf ghc-7.8.3

で、/usr/local/binで

$ sudo rm ghc ghc-7.8.3 ghc-pkg ghc-pkg-7.8.3 ghci ghci-7.8.3 haddock haddock-ghc-7.8.3 runghc runghc-7.8.3 runhaskell

です。さらに

  • ~/.ghc
  • ~/.cabal

も全て消してしまいましょう。

$ cd ~
$ sudo rm -rf .cabal
$ sudo rm -rf .cabal

これでアンインストールは完了です。

$ ghc
bash: ghc: command not found
$ cabal
bash: cabal: command not found

ghcもcabalも使えなくなりました。

ghcの最新版をインストール

先ほど7.8.3のconfigureで見つけたものをもう一度見てみると

By default, \`make install' will install all the files in
\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
an installation prefix other than \`$ac_default_prefix' using \`--prefix',
for instance \`--prefix=\$HOME'.

ということで--prefixをつけるとその場所にインストールしてくれるようですね。binとlibに散らばると面倒なので、このprefixをつけて全て一箇所にインストールしましょう。次に再インストールするときはそのディレクトリと~/.ghc, ~/.cabalだけを消せば全て綺麗に入れなおしができます…とこちらで学びました:

d.hatena.ne.jp

実際にインストールしてみる

インストールを始めましょう。アーカイブをダウンロードして解凍します。

$ curl -O http://downloads.haskell.org/~ghc/7.10.2/ghc-7.10.2-x86_64-apple-darwin.tar.xz
$ tar -xvzf ghc-7.10.2-x86_64-apple-darwin.tar.xz
$ cd ghc-7.10.2

ここからが公式のドキュメントと少し変わるところです。

./configure --prefix=/usr/local/ghc-7.10.2

としてインストール先を指定します。そして

$ make install

でインストールしましょう。adminのグループユーザであればsudoはいらないんじゃないかな…(多分)。とにかくこれでうまくはいりました。 パスを通しましょう。

export PATH="/usr/local/ghc-7.10.2/bin:$PATH"

を~/bash_profileかどっかに追加しておきます。新しいセッションを立ち上げるかsourceしてPATHを追加します。

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.2

アップグレード完了です。ダウンロードしたアーカイブとか展開したディレクトリとかを消しておしまいです。

cabalをインストール

追いかけてcabalをインストールします。

$ curl -O https://hackage.haskell.org/package/cabal-install-1.22.6.0/cabal-install-1.22.6.0.tar.gz
$ tar -xzf cabal-install-1.22.6.0.tar.gz
$ cd cabal-install-1.22.6.0
$ ./bootstrap.sh
$ cabal update

必要があればcabal install cabala-installしておきましょう。

他に必要なライブラリやユーティリティをインストールする

$ cabal install happy
$ cabal install hlint

これで完了です…が

ghc-modをまだ入れていません。なので、次はghc-modをインストールします。これがすこし一筋縄ではいかない模様です。