Haskell PlatformをWindowsにインストールしたらCabalがupdateできなかった話(解決済)
一時はもうダメかと思いましたが、解決しました。
環境
- Windows 7(64bit)
紆余曲折
Haskell PlatformのWindows向けインストーラーをダウンロード、インストールします。
- Haskell Platform for Windows 64bit版を使用しました。
- バージョン:
2014.2.0.0
- Haskell Platform自体は正常にインストールされます。
コマンドプロンプトからcabal update
を実行します。
- 「お前のcabal-installは最新じゃない、
cabal install cabal-install
しろ」とのメッセージが出力されます。 - どうも、この時点で入っているCabalのバージョンは、
cabal --version
コマンドによれば1.18.1.5
の模様です。
cabal install cabal-install
を実行します。
- 謎のエラーになります。
setup-Cabal-1.18.1.3-x86_64-windows-ghc-7.8.3.exe: does not exist
、などなど。 - ググるとHaskellを導入できなかった件 (windows7) — threeennneあたりが見つかります。
- リンクされていたgithubのissue('cabal install' fails with fresh install of 2014.2.0.0 for Windows, 64bit · Issue #139 · haskell/haskell-platform)を読むと、最後にこんなコメントがあります。
I fixed this problem by moving Haskell Platform\2014.2.0.0\mingw\bin to appear before any MinGW- or Cygwin-related paths in the PATH variable.
- 端末にCygwinがインストールされていたことを思い出して↓に進みます。
Haskell Platformが自動挿入した環境変数PATHについて、順番を入れ替えます。
再びcabal install cabal-install
を実行します。
Could not find module ‘Distribution.Verbosity’
等と言われます。ghc-pkg check
を試せ、とも言われます。- エラーでググるとosx - Haskell environment hosed post reinstall - Stack Overflowが見つかります。Mac版情報ですが多分似たようなものでしょう。
GHCのパッケージキャッシュを削除します。
C:\Users\myname\AppData\Roaming\ghc\x86_64-mingw32-7.8.3\package.conf.d
ディレクトリを削除し、ghc-pkg --user recache
コマンドを実行します。C:\Users\myname\AppData
の箇所は、%APPDATA%
環境変数を変更している場合は変わるかもしれません。
cabal install --global cabal-install
コマンドを実行します。
- 無事にアップデートが完了します。
- バージョンを再確認すると
1.22.0.1
にアップデートされました。 --global
オプションが無いと、インストールに成功してもバージョンは既存のものが使われるようです。