没有“cabal升级”最好的解决方法是什么?

我想升级所有的软件包,而不仅仅是一个具有cabal install --upgrade-dependencies

这个shell hackery在OS X上适用于我:

 cabal list --simple-output --installed | awk '{print $1}' | uniq | xargs -I {} cabal install {} --reinstall 

编辑 :现在强制重新安装,并避免安装一个包不止一次,当多个版本存在。 感谢您的意见!

编辑年份 :现在Cabal沙箱和堆栈存在,我强烈build议不要尝试升级包到位。 如果您只能清除现有的沙盒并重新安装最新的依赖项,那么最终会导致更less的麻烦。

.cabal/world文件包含明确安装的每个软件包的列表(在cabal install命令中列出,而不是依赖关系)。 修剪它以删除仅作为依赖关系使用的软件包,不推荐使用的软件包以及您宁愿升级的版本locking软件包。

Cabal不知道如何清理后,但你可以删除几乎所有的东西。 下一个命令将从.cabal/packages (tarballcaching)重新安装:

 cp -t bin .cabal/bin/cabal rm -rf .cabal/{bin,lib,share} .ghc/*-*-*/ ghc-pkg check |&egrep -- '^[A-Za-z0-9-]+-[0-9]' |xargs -n1 --no-run-if-empty ghc-pkg unregister 

现在重新安装手动安装的所有东西:

 cabal install world --upgrade-dependencies --force-reinstalls