所以我正在尝试安装一个包含大杂乱依赖集的包(在本例中为gitit).直接cabal install来自hackage强制重建大量我不想重建的库(与约束text,约束network,约束parsec等有关)我做了正确的事情,运行cabal unpack gitit,手动编辑.cabal文件,以及成功地把它通过一个cabal configure,cabal build循环.到现在为止还挺好.
现在,我想跑一个cabal install.在过去的好时光(去年),这只会安装已经构建的二进制文件和它们所属的文件.不过,现在,正在运行的cabal install运行依赖检查,这决定了一切,我要和建设包不使用相同的parsec等,并尝试重新安装它们反正!即使我只是跑得很好cabal build.什么是关闭它并获得旧的,不聪明的,完全可接受的行为的神奇旗帜?
查看标志,似乎没有任何迹象表明cabal install这样做。在过去,当cabal install您必须手动获取自己的软件包之前和当您必须手动获取自己的软件包时,安装阶段的咒语是runghc Setup install --user在您运行之后runghc Setup configure --prefix=$FOO --user- 也许这会起作用?如果我没记错的话,当你告诉它“安装”时,Setup.hs 不会自动调用“构建”。
现在,对于未来,如果您想避免整个令人讨厌的依赖地狱,我强烈建议您使用cabal-dev它将沙箱您的软件包安装,并且永远不要接触您的实际用户/全局软件包数据库,在这种情况下您只需这样做:
$ cabal unpack gitit
$ cd gitit-0.8.0.1 # latest hackage version
$ cabal-dev install
Run Code Online (Sandbox Code Playgroud)
它将正确下载并安装所有需要的依赖项,例如 cabal install,但它会通过创建./cabal-dev包含独立包数据库的目录来对它们进行沙箱处理。它永远不会触及您的全局或用户包数据库~/.ghc/。cabal-dev有效地使编辑 cabal 文件和处理钻石依赖性问题 Cabal 面临成为过去,这种方式cabal-install使手动下载软件包成为过去。
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |