运行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).
谢谢!
答案 0 :(得分:1)
通常,出现此类问题的原因是您尝试安装程序包A
,该程序包(直接或间接)依赖于程序包B
。但是,您已经安装了包C
,这也取决于包B
,但B
与C
相关联的版本将无法与{{1}一起使用}}
在某些情况下,您可以使用以下方法解决此类问题:
A
......但这只会有效。解决此类事情的更简洁方法是使用sandboxes。如果您在同一个沙箱中不同时需要cabal install --max-backjumps=-1 --reorder-goals <pkg-name>
和A
,或者您可以将C
与不同版本的C
重新关联,这将有所帮助。您可以在沙箱中执行您想要的操作,而不会弄乱主Haskell安装。
如果您自己编写了B
或A
,则可能需要检查软件包的依赖关系并进行调整。我将把输出的一部分翻译成英文,给你一个如何诊断依赖性问题的例子。
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
我放弃了!