所以我正在尝试使用reactive-banana + wxHaskell进行GUI编程。作为Haskell及其开发工具的新手,我对堆栈感到非常困惑。
所以我尝试stack install wx
,提示我安装wxcore
,这会提示我安装wxc
和wxdirect
。在我stack install wxdirect
之后,我尝试运行stack install wxc
,但是请注意:
While constructing the BuildPlan the following exceptions were encountered:
-- Failure when adding dependencies:
wxdirect: needed (>=0.90.1.1), not present in build plan (latest is 0.92.1.0)
needed for package: wxc-0.92.1.1
-- While attempting to add dependency,
Could not find package wxdirect in known packages
Recommended action: try adding the following to your extra-deps in {project root}/stack.yaml
- wxdirect-0.92.1.0
简而言之,我正在尝试使用stack
cabal-install
。而且我不确定为什么这是错的。如果它是错的,那么stack
和cabal-install
之间有什么区别?
答案 0 :(得分:6)
堆栈和cabal安装之间的区别在于堆栈需要精选的(包,版本)列表。结果是堆栈将确保那些版本的那些包都将编译并且开朗。虽然wxdirect似乎不在策划列表中。你应该file a PR with stackage,这是一件好事,因为它也会为其他用户解决这个问题。
您还可以接受最后几行中给出的建议:
Recommended action: try adding the following to your extra-deps in {project root}/stack.yaml
- wxdirect-0.92.1.0
修改stack.yaml文件。更改默认
# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
extra-deps: []
要
extra-deps:
- wxdirect-0.92.1.0
stack现在会尝试安装假装,就好像它(包,版本)已经进入策划列表一样。
但您可能仍会遇到以下问题。
如果你不在一个项目中(并且你想要将一个软件包堆栈安装到用户数据库,那么cabal安装会默默地进行),你会遇到这个问题。这是堆栈和cabal安装之间的差异之一,但它是一个很好的:cabal安装包只是将它放入全局数据库。在需要更新包之前,这很好。使用堆栈,您在项目中始终。如果使用stack.yaml在项目外部运行堆栈,堆栈将咨询您的~/.stack/global/stack.yaml
。只需坚持那里的额外设施。
确保您在resolver:
中使用最新的LTS版本进行堆叠升级,stack.yaml
中的另一个字段。这可以确保您拥有最新的策展。
您可能需要尝试旧版本的wxdirect。 Stackage包有时候,但通常不会落后于每个包的最后一个版本。
您可能遇到了堆栈问题。我以前见过堆栈错误。您也可以在IRC channel上询问。如果这不起作用,只需要在/ r / haskell上写下顽固的爱德华·凯梅特,他就会用数学来解决它。