gpt4 book ai didi

haskell - 为什么 Stack 无法识别刚刚安装的依赖项?

转载 作者:行者123 更新时间:2023-12-02 16:58:42 25 4
gpt4 key购买 nike

所以我尝试使用reactive-banana + wxHaskell 进行GUI 编程。作为 Haskell 及其开发工具的新手,我对堆栈感到非常困惑。

所以我尝试stack install wx,这提示我安装wxcore,这提示我安装wxcwxdirect。在我 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 之间有什么区别?

最佳答案

堆栈和 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 现在将尝试安装,假装该(包、版本)已进入策划列表。

不过,您可能仍会遇到以下问题。

我没有 stack.yaml

如果您不在项目中(并且您想要将软件包安装到用户数据库中,cabal install 会默默地执行此操作),您将遇到这种情况。这是 stack 和 cabal 安装之间的区别之一,但它是一个很好的区别:cabal 安装包只是将其放入全局数据库中。在需要更新软件包之前,这非常棒。使用堆栈,您总是在一个项目中。如果您使用 stack.yaml 在项目外部运行 stack,stack 将引用您的 ~/.stack/global/stack.yaml。只需将额外的部门放在那里即可。

它不会构建

确保您进行了堆栈升级,并且在 resolver:(stack.yaml 中的另一个字段)中使用了最新的 LTS 版本。这可确保您拥有最新的策展内容。

它仍然无法构建

您可能必须尝试旧版本的 wxdirect。 Stackage 包有时(但并非通常)落后于每个包的最后一个版本。

它仍然无法构建

您可能遇到了堆栈问题。我以前见过堆栈错误。您可以调用IRC channel询问也。如果这不起作用,只需在/r/haskell 上骚扰 Edward Kmett,他就会用数学来解决它。

关于haskell - 为什么 Stack 无法识别刚刚安装的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com