Haskell 如何在堆栈中安装当前不在任何LTS快照中的包?

Haskell 如何在堆栈中安装当前不在任何LTS快照中的包?,haskell,haskell-stack,Haskell,Haskell Stack,我正在尝试安装fallowing软件包,但都失败了 我正在windows 10上运行堆栈版本1.3.2,Git版本3f675146590da4f3edf768b89355f798229da2a5 x86\U 64 hpack-0.15.0 我尝试了resolver:ghc-8.0.2和resolver:ghc-7.8.4,但都不起作用 PS:我试图一步一步地添加额外的dep,但最后还是失败了,stack.yaml文件和错误消息被记录下来清除stack.yaml中的extra dep列表,

我正在尝试安装fallowing软件包,但都失败了

我正在windows 10上运行堆栈版本1.3.2,Git版本3f675146590da4f3edf768b89355f798229da2a5 x86\U 64 hpack-0.15.0

我尝试了
resolver:ghc-8.0.2
resolver:ghc-7.8.4
,但都不起作用


PS:我试图一步一步地添加额外的dep,但最后还是失败了,
stack.yaml
文件和错误消息被记录下来

清除
stack.yaml中的
extra dep
列表,将解析器更改为
lts-3.22
,运行
stack solver--update config
(它会自动将vacuum cairo、SourceGraph和其他一些包添加到
额外的dep
)中,并为您的项目运行
堆栈构建
(假设.cabal文件中的依赖项声明正确,则无需运行单独的
堆栈安装$PACKAGE

ghc-*
解析器协调提供的包集(即每个用户,而不是每个项目,并且具有兼容性保证)比快照解析器(无论是LTS还是夜间)小得多一般来说,使用
ghc-*
冲突解决程序的唯一好理由是,如果没有您想要使用的ghc版本的快照冲突解决程序,这里的情况并非如此


我选择了有点旧的
lts-3.22
,因为它是最后一个提供Cabal 1.22和haskell src exts 1.16版本的解析器,这是SourceGraph所需的版本。(原则上,您可以尝试使用具有更宽松版本边界的自定义版本SourceGraph,或者为Stack a shot提供
allow newer
选项,但我猜在这种特定情况下,失败的几率很高,因为给定包描述SourceGraph可能对GHC中的更改非常敏感。)我通过转到找到快照提供的软件包版本。

添加您的阴谋集团依赖项,堆栈应该告诉您该怎么做。-特别是,您可能希望在
extra deps
field.thx中指定依赖项,但在逐步添加所有依赖项后,它最终仍然失败…
清除stack yaml
中的额外deps列表,您是指global project的
stack.yaml
?我不是将此软件包作为软件包的依赖项安装,而是将其作为命令行工具安装。如果没有
stack new
空项目,我应该如何将其作为命令行工具安装?(1)是的--我是指
stack.yaml
(连字符是一个输入错误),如果您没有在项目上下文中工作,那么全局项目文件就是相关的文件。(2)如果SourceGraph处于Stackage中,类似于
stack install SourceGraph--resolver lts-3.2.2
的东西可以工作。由于不是这样,我建议
stack unpack SourceGraph
(获取包的源代码树),然后是
stack init
(创建
stack.yaml
文件),然后按照上面的建议修复解析器和依赖项,最后是
stack install
(稍后我将研究如何调整此答案)我正在使用
stack init--solver
,但由于deps版本冲突而失败,并且没有生成stack.yaml,因此没有位置可以添加
allow newer
选项,我尝试了
stack init--solver--allow newer
,但现在正在工作。@Loochen1990如果您还没有尝试过,我建议
stack init--solver--resolver lts-3.2.2