5

そこで、GUIプログラミングにreactive-banana + wxHaskellを使おうとしています。Haskell とその開発ツールの初心者として、私はスタックに非常に困惑しています。

を試してみるとstack install wx、 をインストールするように促され、 と をインストールするようwxcoreに促されます。Iの後、実行してみますが、見よ:wxcwxdirectstack install wxdirectstack install wxc

While constructing the BuildPlan the following exceptions were encountered:

--  Failure when adding dependencies:    
  wxdirect: needed (>=0.90.1.1), not present in build plan (latest is 0.92.1.0)
needed for package: wxc-0.92.1.1

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

Recommended action: try adding the following to your extra-deps in {project root}/stack.yaml
- wxdirect-0.92.1.0

要するに、私はstacklikeを使おうとしていますcabal-install。そして、なぜこれが間違っているのかわかりません。それが間違っている場合、 と の違いは何stackですかcabal-install?

4

1 に答える 1

9

stack と cabal install の違いは、stack には (パッケージ、バージョン) の精選されたリストが必要であることです。結論として、スタックは、それらのバージョンのパッケージがすべてコンパイルされて元気になることを確認します。ただし、wxdirect はまだ精選されたリストに含まれていないようです。stackage で PR を提出する必要があります。これは、他のユーザーのこの問題も解決するため、すばらしいことです。

また、最後の数行で与えられたアドバイスを利用することもできます。

Recommended action: try adding the following to your extra-deps in {project root}/stack.yaml
- wxdirect-0.92.1.0

そして、stack.yaml ファイルを変更します。デフォルトを変更する

# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps: []

extra-deps:
- wxdirect-0.92.1.0

stack は、その (パッケージ、バージョン) が精選されたリストに載っているかのように装ってインストールを試みるようになりました。

ただし、次の問題が発生する可能性があります。

stack.yaml がありません

あなたが aa プロジェクトに参加していない場合 (そして、パッケージをユーザー データベースにスタック インストールしたい場合、cabal install は黙って行うことになります)、これに遭遇するでしょう。これは、stack と cabal のインストールの違いの 1 つですが、良い点です。cabal のパッケージのインストールは、パッケージをグローバル データベースに入れるだけです。これは、パッケージを更新する必要があるまでは素晴らしいことです。スタックを使用すると、常にプロジェクトに参加できます。プロジェクト外で stack.yaml を使用してスタックを実行すると、スタックは~/.stack/global/stack.yaml. そこにextra-depを貼り付けるだけです。

それは構築されません

アップグレードをスタックし、最新の LTS バージョンを使用していることを確認してresolver:くださいstack.yaml。これにより、最新のキュレーションが確実に得られます。

まだまだ成り立たない

古いバージョンの wxdirect を試す必要があるかもしれません。Stackage パッケージは、通常ではありませんが、すべてのパッケージで最終リリースより遅れることがあります。

それでもまだ成り立たない

スタックの問題に遭遇した可能性があります。以前にスタック バグを見たことがあります。IRC チャンネルでも質問できます。それがうまくいかない場合は、/r/haskell で Edward Kmett にアナグマをしてください。彼は数学で解決してくれます。

于 2015-11-30T23:33:48.713 に答える