3

私は Haskell a cabal がまったく初めてで、yesod を機能させようとしています。

私のカバール バージョンは、カバール ライブラリのバージョン 1.20.0.2 を使用してバージョン 1.20.0.3 の cabal-install です。

alex をインストールしようとすると、次のようになります。

$ cabal install alex
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: alex-3.1.4 (user goal)
next goal: QuickCheck (dependency of alex-3.1.4)
rejecting: QuickCheck-2.8.1, 2.8 (global constraint requires ==2.7.6)
trying: QuickCheck-2.7.6
next goal: transformers (dependency of QuickCheck-2.7.6)
rejecting: transformers-0.4.3.0, 0.4.2.0, 0.4.1.0, 0.3.0.0, 0.2.2.1, 0.2.2.0,
0.2.1.0, 0.2.0.0, 0.1.4.0, 0.1.3.0, 0.1.1.0, 0.1.0.1, 0.1.0.0, 0.0.1.0,
0.0.0.0, 0.4.0.0 (global constraint requires installed instance)
Dependency tree exhaustively searched.

2 回目の試行:

$ cabal install alex happy yesod-bin --allow-newer
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: alex-3.1.4 (user goal)
trying: QuickCheck-2.7.6/installed-1a8... (dependency of alex-3.1.4)
trying: tf-random-0.5/installed-ef3... (dependency of
QuickCheck-2.7.6/installed-1a8...)
next goal: primitive (dependency of tf-random-0.5/installed-ef3...)
rejecting: primitive-0.5.0.1/installed-8e5... (global constraint requires
==0.6)
rejecting: primitive-0.6 (conflict: tf-random =>
primitive==0.5.0.1/installed-8e5...)
rejecting: primitive-0.5.4.0, 0.5.3.0, 0.5.2.1, 0.5.1.0, 0.5.0.1, 0.5, 0.4.1,
0.4.0.1, 0.4, 0.3.1, 0.3, 0.2.1, 0.2, 0.1 (global constraint requires ==0.6)
Dependency tree exhaustively searched.

アレックスをインストールするにはどうすればよいですか?

関連する質問はこれです: cabal install --- グローバル制約にはインストールされたインスタンスが必要です

その質問に対する@kosmikusのコメントは次のとおりです。

したがって、Stackage LTS 構成ファイルには、インストールされた制約トランスフォーマーが含まれています。つまり、既に存在するバージョンのトランスフォーマーのみを使用できます。GHC には特定のバージョンのトランスフォーマーが同梱されているため、これは合理的です。ghc-7.8 の場合、これは Transformers-0.3.0.0 です。何らかの理由で、このインストールされたバージョンは cabal-install によって考慮されません。部分的なログには、理由を確認するのに十分な情報が含まれていません。

Stackage LTS 構成ファイルを修正するにはどうすればよいですか? Ubuntuのどこにありますか?

4

2 に答える 2

1

問題の理由は、GHC が古すぎることでした。新しいバージョンをダウンロードして問題を解決しました。

失敗した(そして間違った)試み

cabal.config現在のディレクトリにファイルが必要です。任意のテキスト エディターで開き、transformers installed文字列を検索します。

見つけたら、transformers ==0.4.3.0または他の好きなバージョンに置き換えます。

dfeurer が書いているように、これは悪い解決策です。

transformersパッケージの依存関係構造の非常に奥深くに位置しています。のみに依存していると思いますbase。Hackage のパッケージの大部分は、直接的または間接的に Hackage に依存していると思います。をアップグレードするtransformersと、実質的にシステム内のすべての依存関係がおかしくなり、Stackage を使用している場合とは逆になります。


Sibiによるクリーンソリューション

スタックパッケージはそのままご使用ください。問題の原因となっているグローバル パッケージがある場合は、それらを削除し、stackage のみを使用します。また、プロジェクトごとにサンドボックスを使用することをお勧めします。

于 2015-05-31T12:53:29.607 に答える
1

これを試してcabal install alex --allow-newer

于 2015-06-01T13:27:54.883 に答える