我刚刚升级到最新版本的cabal-install,即1.20。我不确定它是否相关,但是出于某种原因,cabal开始提取旧版本的软件包。
在我的cabal文件中,指定了所有依赖项而没有版本号。所以我相信,除非存在冲突,否则cabal应该提取最新版本,对吗?
如果我在沙箱环境中运行cabal install --only-dependencies
,cabal会提取所有类型的垃圾和旧包版本,例如mongoDB-1.2.2而不是1.4.4和scotty-0.5而不是0.7.2。如果我运行像cabal install scotty
这样的特定软件包安装,那么它会获取最新版本,一切都很好。因此,我必须手动安装所有依赖项以获取最新版本 - 逐个。烦人。到底是怎么回事?
谷歌没有给我任何打击。
如果阴谋有某种变化,它是什么?如何在沙箱中提取所有最新的依赖项。
感谢。
答案 0 :(得分:2)
某些依赖项具有强制使用给定包的旧版本的上限。可能有帮助的一件事是重新开始。删除你的包存储库(linux机器上的〜/ .ghc),并保持一个规则完全在沙箱中工作。使用您的软件包管理器来安装您需要的全局内容,开发项目的沙箱,并且可以避免出现此问题的大部分原因。也就是说,如果你真的依赖于一个没有更新其上限的项目,那么你就会使用较旧的软件包,而不是向库作者提交补丁或者切换到不同的依赖项。