升级安装在cabal沙箱中的软件包

时间:2014-03-05 18:23:24

标签: haskell cabal cabal-dev

我在理解如何升级cabal沙箱中的软件包时遇到了一些麻烦。我想将esqueleto-1.3.4.5升级为esqueleto-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-dependencies--reinstall

1 个答案:

答案 0 :(得分:6)

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

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

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