无法安装haskell软件包http-enumerator

时间:2015-02-02 15:29:11

标签: haskell hackage

运行cabal安装时获得以下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).

谢谢!

1 个答案:

答案 0 :(得分:1)

通常,出现此类问题的原因是您尝试安装程序包A,该程序包(直接或间接)依赖于程序包B。但是,您已经安装了包C,这也取决于包B,但BC相关联的版本将无法与{{1}一起使用}}

在某些情况下,您可以使用以下方法解决此类问题:

A

......但这只会有效。解决此类事情的更简洁方法是使用sandboxes。如果您在同一个沙箱中不同时需要cabal install --max-backjumps=-1 --reorder-goals <pkg-name> A,或者您可以将C与不同版本的C重新关联,这将有所帮助。您可以在沙箱中执行您想要的操作,而不会弄乱主Haskell安装。

如果您自己编写了BA,则可能需要检查软件包的依赖关系并进行调整。我将把输出的一部分翻译成英文,给你一个如何诊断依赖性问题的例子。

C

您请求了$ cabal install http-enumerator Resolving dependencies... cabal: Could not resolve dependencies: trying: http-enumerator-0.7.3.3 (user goal) 。最新版本是0.7.3.3,所以我会尝试安装它。

http-enumerator

现在,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) 的最新两个版本是0.7.1和0.7.0。但asn1-data需要较早版本的http-enumerator-0.7.3.3。因此,让我尝试较早版本的asn1-data

asn1-data

trying: asn1-data-0.6.1.3 的下一个可用版本是0.6.1.3。

asn1-data

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) 是1.2.0.0,但这不起作用,因为它需要text的不同版本而不是bytestring。所以让我试试http-enumerator的旧版本。

text

现在,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

我放弃了!