Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何禁用本地阴谋集团安装的依赖项检查?_Haskell_Cabal - Fatal编程技术网

Haskell 如何禁用本地阴谋集团安装的依赖项检查?

Haskell 如何禁用本地阴谋集团安装的依赖项检查?,haskell,cabal,Haskell,Cabal,因此,我试图安装一个包含大量杂乱依赖项集的包(在本例中是gitit)。来自hackage的直接阴谋集团安装迫使我重建了大量我不想重建的库(与文本的约束、网络的约束、parsec的约束等有关)。我做了正确的事情,运行了阴谋集团解包gitit,手动编辑了.cabal文件,并成功地完成了阴谋集团配置,阴谋集团构建循环。到目前为止,一切顺利 现在,我想运行一个阴谋集团安装。在过去的好日子里(去年),这将只是安装已经构建的二进制文件和它们所属的文件。但是,现在运行cabal install运行依赖项检查器

因此,我试图安装一个包含大量杂乱依赖项集的包(在本例中是gitit)。来自hackage的直接
阴谋集团安装
迫使我重建了大量我不想重建的库(与
文本
的约束、网络的约束、parsec的约束等有关)。我做了正确的事情,运行了
阴谋集团解包gitit
,手动编辑了.cabal文件,并成功地完成了
阴谋集团配置
阴谋集团构建
循环。到目前为止,一切顺利


现在,我想运行一个
阴谋集团安装
。在过去的好日子里(去年),这将只是安装已经构建的二进制文件和它们所属的文件。但是,现在运行
cabal install
运行依赖项检查器,它决定我正在构建的所有包都不使用相同的
parsec
,等等,并尝试重新安装它们!尽管我刚刚运行了一个完美的
阴谋集团构建
。关闭此功能并获得旧的、不聪明的、完全可以接受的行为的魔法标志是什么?

查看这些标志,似乎没有任何迹象表明
阴谋集团安装
正在这样做。在过去,在
cabal安装之前,当您必须手动获取自己的软件包时,安装阶段的咒语是
runghc Setup install--user
在您运行
runghc Setup configure--prefix=$FOO--user
之后,这可能会起作用?如果我的内存正常,当您告诉Setup.hs“安装”时,Setup.hs不会自动调用“build”

现在,对于未来,如果您想避免整个讨厌的依赖地狱,我强烈建议您使用
cabal dev
,它将沙箱化您的包安装,并且永远不会触及您的实际用户/全局包数据库,在这种情况下,您只需执行以下操作:

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

它将正确地下载并安装所有需要的依赖项,如cabal install,但它将通过创建一个包含自包含包数据库的
/cabal dev
目录对它们进行沙箱处理。它从不触及
~/.ghc/
中的全局或用户包数据库
cabal dev
有效地使编辑cabal文件和处理diamond dependency问题成为过去,cabal安装的方式使手动下载软件包成为过去。

事实上,还有一个
--only
标志,允许只构建和安装该软件包,正如
/Setup
路由所做的那样。

是的——直接使用Setup脚本完成了这个任务。令人惊讶的是,两年前我多么快就忘记了过去的那些日子:-)