如何使用本地cabal安装禁用依赖项检查?

时间:2011-06-30 14:09:56

标签: haskell cabal

所以我正在尝试安装一个包含大杂乱依赖集的包(在本例中为gitit)。来自hackage的直接cabal install重建了我不想重建的大量库(与text上的约束,network上的约束,parsec上的约束有关等我做了正确的事情,运行cabal unpack gitit,手动编辑.cabal文件,并成功通过cabal configurecabal build周期。到目前为止,非常好。

现在,我想运行一个cabal install。在过去的好时光(去年)中,这只会安装已经构建的二进制文件和它们所属的文件。但是,现在,运行cabal install会运行依赖项检查程序,它会确定我正在构建的所有程序包都不使用相同的parsec等,并尝试重新安装它们反正的!即使我只是跑得很好cabal build。什么是关闭它并获得旧的,不聪明的,完全可接受的行为的神奇旗帜?

2 个答案:

答案 0 :(得分:4)

看着旗帜,似乎没有cabal install这样做的任何迹象。在以前的时间,在cabal install之前以及必须手动获取自己的软件包时,在运行runghc Setup install --user之后,安装阶段的咒语是runghc Setup configure --prefix=$FOO --user - 也许这会有用吗?如果我的内存正确提供,当你告诉它'安装'时,Setup.hs不会自动调用'build'。

现在,对于未来,如果你想避免这种令人讨厌的依赖性地狱,我强烈建议你使用cabal-dev来沙箱你的包安装,永远不要触摸你的实际用户/全局包数据库,你刚才做的事情:

$ cabal unpack gitit
$ cd gitit-0.8.0.1 # latest hackage version
$ cabal-dev install

它将正确下载并安装所有必需的依赖项,如cabal安装,但它将通过创建包含自包含数据库数据库的./cabal-dev目录来沙箱化它们。它永远不会触及~/.ghc/中的全局或用户包db。 cabal-dev有效地编辑cabal文件并处理钻石依赖问题Cabal面临着过去,cabal-install手动下载包的方式已成为过去。

答案 1 :(得分:2)

事实证明,有一个--only标志,只允许构建和安装该包,就像./Setup路由一样。