2

私はHaskellを初めて使用し、Stackを使用してMac OSXで小さな個人プロジェクトを構築しています。最近、いくつかの新しい build-deps を cabal ファイルに追加しましたが、実行するstack buildと次のエラーが発生します。

--  While attempting to add dependency,
    Could not find package api-builder in known packages

--  Failure when adding dependencies:
      api-builder: needed (==0.11.0.0), not present in build plan (latest applicable is 0.11.0.0)
      http-client: needed (==0.4.20), 0.4.27 found (latest applicable is 0.4.20)
      http-types: needed (==0.8.6), 0.9 found (latest applicable is 0.8.6)
    needed for package: music-haskell-0.1.0.0

Recommended action: try adding the following to your extra-deps in /Users/.../src/music-haskell/stack.yaml
- api-builder-0.11.0.0

You may also want to try the 'stack solver' command

実行するstack solverと、http-types パッケージに関するエラーが表示されます

cabal: Could not resolve dependencies:
trying: music-haskell-0.1.0.0 (user goal)
next goal: http-types (dependency of music-haskell-0.1.0.0)
rejecting: http-types-0.9 (conflict: music-haskell => http-types==0.8.6)
rejecting: http-types-0.8.6, 0.8.5, 0.8.4, 0.8.3, 0.8.2................
(global constraint requires ==0.9)
Dependency tree exhaustively searched.

私が理解していることから、私はすでにインストールしているように見えますhttp-types-0.9が、今は必要http-types-0.8.6です。最初は手動でインストールしようとしまし$stack install http-typesたが、次のエラーが発生しました。

Error parsing targets: Specified target version 0.8.6 for package http-types does not match snapshot version 0.9

できるかどうかを調べたところ$ stack uninstall、非推奨のようです。

のスナップショット/グローバルターゲットを取り除くにはどうすればよいですhttp-typeか??

4

1 に答える 1

3

extra-deps を使用して、stack.yaml ファイル内の特定のスナップショット パッケージをオーバーライドできます。

extra-deps:
- http-types-0.8.6

使用しているスナップショットと競合するバージョン境界を持つパッケージを含め始めると、これらの問題にすぐに遭遇する可能性があります。私の推奨する解決策は次のとおりです。

  • バージョンを手動でいじる必要がないように、パッケージの管理者にパッケージを Stackage に入れるように依頼してください
  • 可能な限り Stackage 内のパッケージに固執する

作成者でなくても、自分でパッケージを Stackage に追加できます。手順については、メンテナ ガイドを参照してください。

于 2016-02-14T14:24:24.520 に答える