6

スタックを試してみることにしました。私はそれをインストールし、それを使用してghcの最新バージョンをインストールしました。スタックを使用していくつかのパッケージをインストールしましたが、パッケージが ghc に表示されず、ghc-pkg でパッケージを一覧表示すると、スタックを介してインストールしたパッケージが存在しないことがわかります。どうしてこれなの?スタックの目的を誤解していますか?

4

1 に答える 1

8

スタックがグローバル パッケージ データベースにアクセスすることはありません。階層化されたデータベース アプローチを使用します。

  1. グローバル データベース - 変更なし
  2. スタックスナップショット内のパッケージは、スナップショット データベースにインストールされます
  3. 他のパッケージはプロジェクトごとにローカルにインストールされます

したがって、グローバル データベースを汚染する代わりに、ほとんどのパッケージがスナップショット データベースにインストールされるため、ほとんどのパッケージを共有できます。スタック スナップショット内のパッケージには互換性がある (つまり、常に一緒にコンパイルされる) ため、 Cabal 地獄に陥ることはありません。

stack ghciまたはを使用stack ghcして、パッケージ データベースが構成された対応するコマンドを実行できます。

より正確な説明はスタックウィキにあります

于 2015-07-13T20:55:38.443 に答える