我是Haskell的初学者,我一直在兴高采烈地使用cabal来安装我认为可能需要的一切,假设它可以像port或homebrew一样工作,为我解决所有的依赖关系,并保持程序更新,这样它们就不会崩溃,等等。然而,现在当我尝试安装lenses库时,我收到了这样的消息:
In order, the following would be installed:
base-orphans-0.5.4 (new package)
distributive-0.5.0.2 (new version)
comonad-5 (new version)
bifunctors-5.4.1 (new package)
mtl-2.2.1 (reinstall) changes: transformers-0.5.2.0 -> 0.4.3.0
exceptions-0.8.3 (new package)
prelude-extras-0.4.0.3 (new package)
profunctors-5.2 (new package)
reflection-2.1.2 (new package)
semigroupoids-5.1 (new package)
free-4.12.4 (new package)
adjunctions-4.3 (new package)
kan-extensions-5.0.1 (new package)
lens-4.14 (new package)
cabal: The following packages are likely to be broken by the reinstalls:
parsec-3.1.11
network-uri-2.6.1.0
hackage-security-0.5.2.2
HTTP-4000.3.3
Use --force-reinstalls if you want to install anyway.嗯,破坏HTTP和一些叫做“安全”的东西听起来不是一个好主意,而且我的代码依赖于Parsec。解决这种情况的正确方法是什么?我是否应该使用--force-reinstalls,并期望事情不会真的崩溃?或者让这些包被破坏,然后重新安装它们,假设如果HTTP包被破坏是可能的?或者,我必须自己选择安装或不安装哪些软件包,因为我知道有些软件包会相互冲突?
问题的一部分可能是我最初没有意识到hackage上的一些包并不是真正的产品级代码,所以我确实有很多我并不真正需要的依赖项。也许解决方案是卸载这些包及其依赖项。然而,cabal --help没有显示任何类型的卸载命令,所以我有点迷惑如何做到这一点。
发布于 2016-10-03 03:32:02
标准的技术是告诉cabal,你不介意重新安装可能会被破坏的软件包。您可以使用下面这样的代码来完成此操作
cabal install lenses parsec-3.1.11 network-uri-2.6.1.0 hackage-security-0.5.2.2 HTTP-4000.3.3关于this fine introduction to cabal packages上正在发生的事情,有更多的细节,特别是标签为“信鸽坠落陷阱”的部分。
https://stackoverflow.com/questions/39813308
复制相似问题