0

cabal install を実行すると、次の bash トランスクリプトが得られました。

http-enumerator に必要な多くのパッケージが利用できないと訴えているようです。プリントアウトの最後の行にある「Backjump」の意味がわかりません。

パッケージの依存関係を解決するにはどうすればよいですか?

$ cabal install http-enumerator
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: http-enumerator-0.7.3.3 (user goal)
next goal: asn1-data (dependency of http-enumerator-0.7.3.3)
rejecting: asn1-data-0.7.1, 0.7.0 (conflict: http-enumerator =>
asn1-data>=0.5.1 && <0.7)
trying: asn1-data-0.6.1.3
next goal: text (dependency of asn1-data-0.6.1.3)
rejecting: text-1.2.0.0/installed-18f... (conflict: text =>
bytestring==0.10.4.0/installed-6da..., http-enumerator => bytestring>=0.9.1.4
&& <0.10)
trying: text-1.2.0.4
next goal: certificate (dependency of http-enumerator-0.7.3.3)
rejecting: certificate-1.3.9, 1.3.8, 1.3.7, 1.3.6, 1.3.5, 1.3.3, 1.3.2, 1.3.1,
1.3.0, 1.2.9, 1.2.8, 1.2.7, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0
(conflict: http-enumerator => certificate>=1.1 && <1.2)
trying: certificate-1.1.1
next goal: tls-extra (dependency of http-enumerator-0.7.3.3)
rejecting: tls-extra-0.6.6, 0.6.5, 0.6.4, 0.6.3, 0.6.1, 0.6.0, 0.5.1, 0.5.0
(conflict: http-enumerator => tls-extra>=0.4.3 && <0.5)
rejecting: tls-extra-0.4.7.1, 0.4.7, 0.4.6.1, 0.4.6, 0.4.5 (conflict:
certificate==1.1.1, tls-extra => certificate>=1.2.0 && <1.3.0)
rejecting: tls-extra-0.4.4, 0.4.3 (conflict: text==1.2.0.4, tls-extra =>
text>=0.5 && <1.0)
rejecting: tls-extra-0.4.2.1, 0.4.2, 0.4.1, 0.4.0, 0.3.1, 0.3.0, 0.2.3, 0.2.2,
0.2.1, 0.2.0, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1,
0.1.0 (conflict: http-enumerator => tls-extra>=0.4.3 && <0.5)
Backjump limit reached (change with --max-backjumps).

ありがとう!

4

1 に答える 1

1

一般に、この種の問題は、 packageAに (直接的または間接的に) 依存する package をインストールしようとしているために発生しますB。ただし、既に package がCインストールされており、これも package に依存していますが、リンクされBた のバージョンはでは動作しません。BCA

場合によっては、次を使用してこの種の問題を解決できる場合があります。

cabal install --max-backjumps=-1 --reorder-goals <pkg-name>

...しかし、それは時々しか機能しません。この種の問題に対処するよりクリーンな方法は、サンドボックスを使用することです。Aこれは、同じサンドボックスでとの両方が必要ない場合や、別のバージョンの とC再リンクできる場合に役立ちます。メインの Haskell インストールを台無しにすることなく、サンドボックスでやりたいことを実行できます。CB

AまたはC自分で書いた場合は、パッケージの依存関係を調べて調整する必要があるかもしれません。依存関係の問題を診断する方法の例を示すために、その出力の一部を英語に翻訳します。

$ cabal install http-enumerator
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: http-enumerator-0.7.3.3 (user goal)

をリクエストしhttp-enumeratorました。最新版は0.7.3.3なので、インストールしてみます。

next goal: asn1-data (dependency of http-enumerator-0.7.3.3)

今、http-enumerator-0.7.3.3パッケージが必要なasn1-dataので、それをインストールしてみましょう。

rejecting: asn1-data-0.7.1, 0.7.0 (conflict: http-enumerator =>
asn1-data>=0.5.1 && <0.7)

の最新の 2 つのバージョンasn1-dataは 0.7.1 と 0.7.0 です。ただしhttp-enumerator-0.7.3.3、以前のバージョンのasn1-data. では、古いバージョンを試してみましょうasn1-data

trying: asn1-data-0.6.1.3

の次の利用可能なバージョンasn1-dataは 0.6.1.3 です。

next goal: text (dependency of asn1-data-0.6.1.3)

しかし、そのバージョンの にはasn1-dataが必要textなので、最初にそれをインストールする必要があります。

rejecting: text-1.2.0.0/installed-18f... (conflict: text =>
bytestring==0.10.4.0/installed-6da..., http-enumerator => bytestring>=0.9.1.4
&& <0.10)

の最新バージョンはtext1.2.0.0 ですが、必要なバージョンとは異なる が必要なため、これは機能しません。では、古いバージョンの を試してみましょう。bytestringhttp-enumeratortext

trying: text-1.2.0.4
next goal: certificate (dependency of http-enumerator-0.7.3.3)

さて、そのバージョンの にはtextが必要certificateなので、最初にそれをインストールする必要があります。

rejecting: certificate-1.3.9, 1.3.8, 1.3.7, 1.3.6, 1.3.5, 1.3.3, 1.3.2, 1.3.1,
1.3.0, 1.2.9, 1.2.8, 1.2.7, 1.2.6, 1.2.5, 1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0
(conflict: http-enumerator => certificate>=1.1 && <1.2)

しかし、 のこれらのバージョンはすべてcertificateと互換性がありませんhttp-enumerator

trying: certificate-1.1.1

やっと少し成功。を使用できcertificate-1.1.1、 のすべての依存関係を満たすことができますasn1-data text

next goal: tls-extra (dependency of http-enumerator-0.7.3.3)

しかし、http-enumerator-0.7.3.3も必要tls-extraです。

rejecting: tls-extra-0.6.6, 0.6.5, 0.6.4, 0.6.3, 0.6.1, 0.6.0, 0.5.1, 0.5.0
(conflict: http-enumerator => tls-extra>=0.4.3 && <0.5)

の最新バージョンはtls-extraと互換性がないため使用できませんhttp-enumerator

rejecting: tls-extra-0.4.7.1, 0.4.7, 0.4.6.1, 0.4.6, 0.4.5 (conflict:
certificate==1.1.1, tls-extra => certificate>=1.2.0 && <1.3.0)

これらのバージョンのtls-extraは と互換性がないため、使用できませんcertificate

rejecting: tls-extra-0.4.4, 0.4.3 (conflict: text==1.2.0.4, tls-extra =>
text>=0.5 && <1.0)

これらのバージョンのtls-extraは と互換性がないため、使用できませんtext

rejecting: tls-extra-0.4.2.1, 0.4.2, 0.4.1, 0.4.0, 0.3.1, 0.3.0, 0.2.3, 0.2.2,
0.2.1, 0.2.0, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2, 0.1.1,
0.1.0 (conflict: http-enumerator => tls-extra>=0.4.3 && <0.5)

また、 の古いバージョンは とtls-extra互換性がありませんhttp-enumerator

Backjump limit reached (change with --max-backjumps).

あきらめる!

于 2015-02-02T18:51:41.740 に答える