堆栈只能找到较新的Cabal版本



我正在尝试使用Stackage LTS-13.12来构建我的项目。

堆栈抱怨Cabal的版本太新后,我尝试安装一个旧版本:

cabal --version
  cabal-install version 2.2.0.0
  compiled using version 2.2.0.1 of the Cabal library 

但是,当我运行stack solver时,我会收到以下错误:

Using configuration file: stack.yaml
Using cabal packages:
- ./
Using resolver: lts-13.12
Warning: Installed version of cabal-install (2.4.1.0) is newer than stack has been tested with.  If you run into difficulties, consider downgrading.
Using compiler: ghc-8.6.4
Asking cabal to calculate a build plan...
Trying with packages from lts-13.12 and 1 external packages as hard constraints...
The following lines from cabal-install output could not be parsed: 
optparse-applicative-0.14.3.0 (via: project-0.1.0.0 project-0.1.0.0) (new
package)
CallStack (from HasCallStack):
  error, called at src/Stack/Solver.hs:174:16 in stack-1.9.3-F7FXKCpM3pk5wCtbL9Utvv:Stack.Solver

我的问题是:

  • 为什么Stack看到较新的阴谋集?我该如何看待较老的人?
  • 为什么堆栈与Cabal 2.4.1.0不兼容,当时是堆栈LTS中的版本13.12?

我正在运行堆栈的Version 1.9.3,如果这有所不同。

堆栈求解器错误消息已知不好,并且在Cabal Output上cho之以鼻。我不认为此功能维护得很好。

我确实希望Stack会更新其错误和警告。坚持使用Cabal-Install-2.4.1.0可能是最佳选择。

我建议您强制使用LTS-13.12,而不是使用stack solver,然后手工添加额外的DEP来解决您遇到的任何问题。在大多数情况下,堆栈都会有助于推荐正确的额外深度(无需使用求解器),但是您确实需要应用一些直觉以确保它们正确。

最新更新