【发布时间】:2014-03-05 18:23:24
【问题描述】:
我在理解如何在 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。
【问题讨论】:
-
cabal sandbox delete,cabal sandbox init,cabal install --only-dependencies是我通常做这种事情的方式。使用相对较少的依赖项,重新运行整个事情不需要很长时间。或者,您可以从您的.cabal-sandbox/<platform>-package-db/文件夹中删除旧的equeleto文件夹(我可能对该文件夹路径不精确,不记得我的头顶了) -
感谢 bhecklilr - 对我来说似乎工作正常,虽然 yesod 平台需要 很多 时间来编译,删除包文件夹可能是一个更好的主意。请发表您的评论作为答案,我会投赞成票。