9

我在理解如何升级 cabal 沙箱中的软件包时遇到了一些麻烦。我想升级esqueleto-1.3.4.5esqueleto-1.3.5并更改myapp.cabal为依赖esqueleto >= 1.3.5 && < 1.4.

$ cabal --version cabal-install version 1.18.0.2 using version 1.18.1.2 of the Cabal library $ cabal install --upgrade-dependencies Resolving dependencies... cabal: Could not resolve dependencies: trying: esqueleto-1.3.4.5/installed-ac7... (user goal) next goal: myapp (user goal) rejecting: myapp-0.0.0 (conflict: esqueleto==1.3.4.5/installed-ac7..., myapp => esqueleto>=1.3.5 && <1.4)

在我看来,这个错误好像 cabal 正在尝试使用已安装的 esqueleto 版本来解决依赖关系,esqueleto-1.3.4.5/installed-ac7...有人可以解释一下这是如何工作的吗?

我的直觉是我应该用它--upgrade-dependencies来做到这一点,但我也尝试过--only-dependenciesand --reinstall

4

1 回答 1

6

我发现的最简单的方法就是对你的沙箱进行核攻击并重新开始

$ cabal sandbox delete
$ cabal sandbox init
$ cabal install --only-dependencies

您也可以从.cabal-sandbox/<platform>/and.cabal-sandbox/<platform>-packages.conf/文件夹中删除特定的包,但这需要更多的“手术”。除非您的依赖关系很大并且您需要经常这样做,否则核选项不会太烦人。

于 2014-03-05T20:02:16.603 回答