这些天我正在学习Haskell。我在Github中做了一个有趣的项目:https://github.com/tmishima/Hinecraft 我克隆了它,我想自己构建并运行它。但是我遇到了类似的堆栈构建问题
Resolver 'lts-13.0' does not have all the packages to match your requirements.
FTGL not found
- Hinecraft requires -any
GLUtil not found
- Hinecraft requires -any
OpenGLRaw version 3.3.1.0 found
- Hinecraft requires <=2.3.0.0
看起来这些依赖项无法在堆栈中找到,我现在该怎么办?我应该手动下载这些依赖项并在本地构建它们吗? 感谢您的帮助。
.cabal依赖项代码
build-depends:
base , GLFW-b , OpenGL , mtl
, bytestring , array , vector , directory
, process , OpenGLRaw <= 2.3.0.0 , cereal , FTGL
, time , containers , GLUtil , linear , text
, sqlite-simple
答案 0 :(得分:2)
那些依赖项未包含在堆叠的软件包集中(您可以在https://www.stackage.org/lts-13.0中进行检查)。
但是,它们位于hackage存储库中(例如http://hackage.haskell.org/packages/search?terms=GLUtil),您可以使用它们来建立堆栈,并在extra-deps
配置文件中添加stack.yaml
部分:
resolver: lts-13.0
extra-deps:
- FTGL-2.1
- GLUtil-0.10.3
- OpenGLRaw-2.3.0.0
我尚未测试过该版本,可能会失败,因为依赖项不兼容。
我已尝试构建软件包,但上述配置不起作用。 actual cabal file没有OpenGLRaw <= 2.3.0.0
约束,也许您出于某种原因添加了约束?
如果不是这样,您可以尝试构建它,从阴谋集团文件中删除约束,并使用此stack.yaml
使用默认的OpenGLRaw-3.3.1.0
:
resolver: lts-13.0
extra-deps:
- FTGL-2.1
- GLUtil-0.10.3
由于该软件包需要OpenGLRaw
(2.3.0.0)的旧版本,因此我已经设法使用lts-6.35
来定义使用该版本的配置文件:
resolver: lts-6.35
extra-deps:
- FTGL-2.1
- GLURaw-1.4.0.2
- GLUtil-0.8.8
- hpp-0.3.1.0
- OpenGL-2.13.0.0
- OpenGLRaw-2.3.0.0
希望有帮助!
作为旁注,我不得不提到cabal
能够以原始约束构建软件包,而无需进一步配置(尽管它选择了不同版本的lib)。