gpt4 book ai didi

haskell - 为什么 cabal 认为我需要一个旧图书馆?

转载 作者:行者123 更新时间:2023-12-02 14:08:15 25 4
gpt4 key购买 nike

为了重新开始,我删除了 ~/.ghc/x86_64-linux-7.8.2 处的 package.conf.d

当我尝试安装 numeric-prelude 时,cabal 尝试安装旧版本的 mtl,即使我已经检查了所有依赖项和最新的 >mtl 可以使用。

这是一个较小的示例,演示了(希望)相关的问题:

$ cabal install QuickCheck parsec --dry-run
Resolving dependencies...
In order, the following would be installed (use -v for more details):
mtl-2.1.3.1 (latest: 2.2.1)
primitive-0.5.3.0
random-1.0.1.1
text-1.1.1.3
parsec-3.1.5
tf-random-0.5
QuickCheck-2.7.5

但要单独安装:

$ cabal install QuickCheck --dry-run
Resolving dependencies...
In order, the following would be installed (use -v for more details):
primitive-0.5.3.0
random-1.0.1.1
tf-random-0.5
QuickCheck-2.7.5

$ cabal install parsec --dry-run
Resolving dependencies...
In order, the following would be installed (use -v for more details):
text-1.1.1.3
transformers-0.4.1.0
mtl-2.2.1
parsec-3.1.5

两者都不需要mtl-2.1.3.1!

问题与numeric-prelude类似:我已经使用mtl-2.2安装了所有列出的依赖项,没有出现问题。然后,当我尝试安装 numeric-prelude 时,cabal 尝试安装旧版本的 mtl

我认为即使我破坏了我的阴谋包,删除用户package.conf.d也能解决这个问题。那么我的 cabal 是否仍然感到无聊,还是这里发生了其他事情?

最佳答案

我可以通过以下方式在我的机器上“修复”这个问题:

cabal install QuickCheck parsec --constraint="transformers == 0.4.*"

本例中的问题是 QuickCheck取决于变压器,首选是选择您已经安装的版本,即 transformers-0.3.0.0 。但这个选择transformers现在与选择最新的 mtl 不一致。现在 Cabal 必须选择违反两个首选项中的哪一个(要么选择 transformers 的更高版本来构建 QuickCheck ,要么选择 mtl 的旧版本)。它随机选择一个,在这种情况下,这恰好不是您想要的......添加附加约束会有所帮助。

编辑

对于numeric-prelude ,情况略有不同。最新版本numeric-prelude取决于storable-record ,它明确依赖于 transformers < 0.4 。但是numeric-prelude还取决于parsec ,这取决于 mtl 。所以你根本无法将它与最新的mtl一起使用.

关于haskell - 为什么 cabal 认为我需要一个旧图书馆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353042/

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