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

Reh*_*que 9 haskell cabal cabal-dev

我在理解如何升级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-dependencies--reinstall.

bhe*_*ilr 6

我找到的最简单的方法就是让你的沙盒重新开始并重新开始

$ cabal sandbox delete
$ cabal sandbox init
$ cabal install --only-dependencies
Run Code Online (Sandbox Code Playgroud)

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