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

时间:2019-03-11 21:57:25

标签: haskell ghc cabal haskell-stack cabal-install

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

Stack抱怨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?我怎样才能看到较旧的呢?
  • 当Stackage LTS 13.12中的版本为Stackal为什么与Cabal 2.4.1.0不兼容?

如果正在起作用,我正在运行Version 1.9.3的Stack。

1 个答案:

答案 0 :(得分:2)

已知堆栈求解器错误消息是错误的,并且会在电缆输出上阻塞。我认为此功能不能得到很好的维护。

我希望堆栈会更新其错误和警告。坚持使用cabal-install-2.4.1.0可能是最好的选择。

我建议您强迫它使用lts-13.12,而不是使用stack solver,然后手动添加额外的部门来解决您遇到的任何问题。大多数时间堆栈将有助于推荐正确的额外深度(不使用求解器),但是您需要运用一些直觉来确保它们正确。