これまでのところうまくいった回避策について説明します。私はさまざまなことを試しましたが、ここではうまくいった試みについてのみ説明します。
(ところで: 私は Mac OS X 10.6.4 を使用していますが、システムによって結果が異なる場合があります)
- ソースから GHC 6.12.3 をインストールしました。GHC のビルドに必要なため、以前の GHC を削除しないでください。
- Haskell Platform 2010.1.0.1インストーラーからのものであった以前のGHCへのシンボリックリンク
/usr/bin
( ghc
、、、および)ghci
を削除しました。ghc-pkg
runhaskell
- そのスクリプト
cabal-install
を使用してインストールしました。bootstrap.sh
random
およびhaskell98
パッケージのパッチを適用したバージョンをインストールしました。違いは.cabal
ファイル
にあるだけです
- のバージョン
random
を に上げ、 への1.0.0.2.1
依存関係を に変更しましtime
たtime == 1.1.*
- のバージョン
haskell98
を上げて1.0.1.1.1
、それだけです
- 実行
cabal update
しcabal upgrade
て、どのパッケージが古くなっているかを確認しました。私はcabal install
それらをしました。これにより、安定した状態に早く到達できると信じています。syb
(インストールが失敗したことに注意してください。別cabal install parsec
の言い方をすると、それについては何もする必要はありませんcabal upgrade
。そのため、これら2つのパッケージをそのままにしておきました)
ghc-pkg check
ステージ間を実行して、セットアップが問題ないことを確認しました。パッケージが同じバージョン番号で以前のバージョンに再インストールされ、それに依存するパッケージを再インストールする必要があるため、時々壊れます。それが起こるとcabal install
、壊れたパッケージが再び表示されます。
また、次のプログラムを使用して、セットアップに同じバージョンの 2 つのパッケージが含まれていないことを確認しました。
import Data.List (sort)
import Data.Maybe (fromJust)
import System.IO (hGetContents)
import System.Process (CreateProcess (std_out), StdStream (CreatePipe), createProcess, shell)
main :: IO ()
main = do
pkgListRaw <-
createProcess (shell "ghc-pkg list") { std_out = CreatePipe }
>>= hGetContents . fromJust . sndOfFourTup
let pkgListSorted = sort . filter (not . null) $ lines pkgListRaw
putStrLn .
unlines . map (dropWhile (== ' ') . fst) .
filter (uncurry (==)) . zip pkgListSorted $ tail pkgListSorted
where
sndOfFourTup (_, x, _, _) = x
、、、、およびその他のパッケージを編集しcabal install
てhlint
からyesod
、セットアップが「安定した状態」に達し、それらのいずれも再インストールされないまで、前のリストを何度も編集しました。haddock
HDBC-mysql
hakyll
cabal install
cabal install
私が取り組んでいる自分のプログラムがコンパイルされて動作することを確認しました。今はすべて問題ないようです
ノート:
- Haskell Platform 2010.1.0.1 を動作させることができませんでした。私が GHC 6.12.3 にアップグレードした後にのみ、問題が解決しました。皮肉なことに (?)、これは GHC のダウンロード ページの推奨事項に反します。
止まる!
ほとんどのユーザーには、GHC の代わりに Haskell Platform をインストールすることをお勧めします。現在の Haskell Platform リリースには、最近の GHC リリース、その他のツール (cabal など)、および連携して動作することが知られているより大きなライブラリ セットが含まれています。
この回避策は、将来的にも機能しなくなる可能性があります。これはおそらく数か月以内に起こると思います。のようなコア ライブラリrandom
が更新され、依存関係の問題が再び解明され始めます。それから私/あなたは私たちのセットアップを修正するために時間を費やさなければなりません. おそらく、新しい GHC へのアップグレードが必要になるでしょう。しかし、依存関係の問題を解決するためにハックパッケージが更新されると、安定するのは古いリリースになるかもしれません。あなたへのサービスとして、私は時が来たらこの質問と回答を更新します. (他の人もこの問題を抱えていると仮定します。これまでのところ、Simon Marlow と Peaker もこの問題に直面していることを確認しました)
Haskell のセットアップが壊れていることを知る方法 (これらのいずれかに該当する場合、セットアップが壊れています):
- 何も機能しません
ghc-pkg check
壊れていると言う
- 上記のこの回答にソースを入れた短いプログラムは、まったく同じバージョンのパッケージが2回インストールされていることを発見しました
cabal update
そして、cabal install
上で書いたパッケージのリスト、または別のリスト (できれば多くの依存関係を持つ大きなもの) を繰り返します。安定した状態に到達しない場合 (サイクルの反復により常に何かが再インストールされる)、セットアップが壊れています。警告: この手順により、現在機能している Haskell のセットアップが破壊される可能性があります。マゾ好奇心がある場合、またはセットアップが壊れた後にセットアップを修正する意思がある場合は、これを行ってください (このプロセスには時間がかかる可能性があります)。
セットアップが壊れているか、機能しているかどうかを知りたいです。これは私を助けることができます。たとえば、GHC 6.10 のセットアップが正常に動作していることがわかった場合、I/U は Haskell などを試してみることを誰かに勧める機会に、それらのセットアップを人々に勧めることができます。
これが、同じまたは同様の問題に直面している他の人に役立つことを願っています。サイモン・マーロウとジョンに感謝!