堆栈不受支持的版本

Stack unsupported version

我正在尝试使用堆栈 (lts-3.20) 构建 libssh2-hs,但出现了一些错误:

$ stack build
No compiler found, expected minor version match with ghc-7.10.2 (x86_64-ncurses6) (based on resolver setting in /home/black/programmation/haskell/libssh2-hs/stack.yaml).
To install the correct GHC into /home/black/.stack/programs/x86_64-linux/, try running "stack setup" or use the "--install-ghc" flag.
$ stack setup
No information found for ghc-7.10.2.
Supported versions for OS key 'linux64-ncurses6': GhcVersion 7.10.3, GhcVersion 8.0.1, GhcVersion 8.0.2

我使用 archlinux 64 位,这里发生了什么,我能做什么?

此错误消息暗示了问题的根源:

No information found for ghc-7.10.2.
  Supported versions for OS key 'linux64-ncurses6': GhcVersion 7.10.3, GhcVersion 8.0.1, GhcVersion 8.0.2

Arch Linux 默认提供 libncurses6,而 GHC 的标准构建期望 libncurses5/libtinfo5。 Stack 可以获取使用 libncurses6 的替代 GHC 构建;但是,它们仅在 GHC 7.10.3 之后可用,这解释了为什么使用 GHC 7.10.2 的快照会出现此问题。以下建议,摘自 Stack issue #3177,应该可以解决它:

Install ncurses5-compat-libs from AUR and then force Stack to use the standard GHC bindist by doing something like stack --ghc-build=standard setup.

(请注意,--ghc-build=standard 可能不是必需的——如果我没记错的话,几个月前我 运行 进入这个问题时 stack setup 检测到适当的 GHC 构建安装了 ncurses5-compat-libs,无需明确指定。)