3

npm ではnode_modules、依存パッケージのディレクトリからの相対ディレクトリに依存関係がインストールされます。各パッケージは、その依存関係を自身の内部に格納します。

ただし、Cabal を使用すると、パッケージをインストールすると常にグローバルに (つまり に~/.cabal) インストールされます。これは、異なるバージョンのパッケージが互いに競合し、すべてが失敗してうまくいかないため、悪夢と涙の完璧なレシピです。

グローバルではなく、自分のパッケージのサブディレクトリなど、ローカルにCabal パッケージをインストールしたいと考えています。これらのパッケージのすべての依存関係は同じことを行います。パッケージのディレクトリ ツリーの例は次のようになります。

my_package/
  dependencies/
    json/
      dependencies/
        foo/
          etc...
        bar/
          etc...
    mtl/
      etc...
  my_package.cabal
  src/
    Main.hs

これは可能ですか?

4

1 に答える 1

4

編集: cabal の新しいバージョンでは、cabal-dev ではなく、組み込みのcabal サンドボックスを使用する必要があります。

cabal-devツールを見てみましょう。virtualenvPythonの場合と同様です。

基本的に、コマンドcabalを使用する場所では、を使用しますcabal-dev。作業中のパッケージをインストールするには、そのディレクトリに移動してcabal-dev install. ghc-pkg駆け抜けることもcabal-devできるので、 みたいなことができますcabal-dev ghc-pkg unregister foo-bar。また、あなたもそれから始めることができGHCiます: cabal-dev ghci.

デフォルトでは、プロジェクト内のディレクトリにcabal-devパッケージをインストールします。これは、例で呼び出すものです。cabal-devdependencies

于 2013-01-12T17:05:00.670 に答える