Reh*_*que 9 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.
我找到的最简单的方法就是让你的沙盒重新开始并重新开始
$ cabal sandbox delete
$ cabal sandbox init
$ cabal install --only-dependencies
Run Code Online (Sandbox Code Playgroud)
您也可以从.cabal-sandbox/<platform>/和.cabal-sandbox/<platform>-packages.conf/文件夹中删除特定的包,但这需要更多的"手术".除非您的依赖关系非常庞大并且您需要经常这样做,否则核选项并不会太烦人.