如何在本地切换GHC版本适配accelerate 1.3的base依赖
解决GHC版本切换以安装accelerate 1.3的问题
错误信息翻译
Error: cabal-3.10.2.1.exe: 无法解析依赖项: [__0] 尝试: gpu-acceleration-haskell-0.1.0.0 (用户目标) [__1] 下一个目标: base (gpu-acceleration-haskell 的依赖项) [__1] 拒绝: base-4.17.2.1/installed-4.17.2.1 (冲突: gpu-acceleration-haskell => base^>=4.12) [__1] 跳过: base-4.19.0.0, base-4.18.2.0, base-4.18.1.0, base-4.18.0.0, base-4.17.2.1, base-4.17.2.0, base-4.17.1.0, base-4.17.0.0, base-4.16.4.0, base-4.16.3.0, base-4.16.2.0, base-4.16.1.0, base-4.16.0.0, base-4.15.1.0, base-4.15.0.0, base-4.14.3.0, base-4.14.2.0, base-4.14.1.0, base-4.14.0.0, base-4.13.0.0 (具有导致前一个版本失败的相同特征: 被 'gpu-acceleration-haskell' 的约束 '^>=4.12' 排除) [__1] 拒绝: base-4.12.0.0, base-4.11.1.0, base-4.11.0.0, base-4.10.1.0, base-4.10.0.0, base-4.9.1.0, base-4.9.0.0, base-4.8.2.0, base-4.8.1.0, base-4.8.0.0, base-4.7.0.2, base-4.7.0.1, base-4.7.0.0, base-4.6.0.1, base-4.6.0.0, base-4.5.1.0, base-4.5.0.0, base-4.4.1.0, base-4.4.0.0, base-4.3.1.0, base-4.3.0.0, base-4.2.0.2, base-4.2.0.1, base-4.2.0.0, base-4.1.0.0, base-4.0.0.0, base-3.0.3.2, base-3.0.3.1 (来自不可升级包的约束需要已安装的实例) [__1] 失败(回溯, 冲突集: base, gpu-acceleration-haskell) 在彻底搜索依赖树的其余部分后,这些是我最难实现的目标: base, gpu-acceleration-haskell
解决方案
使用 Cabal(优先推荐)
Cabal 配合 GHCup 可轻松管理多版本GHC,实现项目级版本隔离:
安装 GHCup
GHCup 是 Haskell 官方工具链管理工具,用于安装和切换GHC、Cabal版本。执行以下命令完成安装:curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh安装兼容的GHC版本
accelerate 1.3 要求base >=4.12 && <4.15,对应GHC版本为:- GHC 8.6.x → base 4.12
- GHC 8.8.x → base 4.13
- GHC 8.10.x → base 4.14
推荐安装最新的8.10系列版本:
ghcup install ghc 8.10.7为项目指定GHC版本
- 临时使用:每次运行Cabal命令时手动指定编译器:
cabal run --with-compiler=ghc-8.10.7 - 永久生效:在项目根目录创建
cabal.project.local文件,添加以下内容:
后续执行with-compiler: ghc-8.10.7cabal build、cabal run等命令时,会自动使用该版本GHC,不影响全局默认版本。
- 临时使用:每次运行Cabal命令时手动指定编译器:
使用 Stack
Stack 自带GHC版本管理,会为每个项目隔离独立的GHC环境:
确定兼容的Resolver
Stack的Resolver对应固定GHC版本,选择使用GHC 8.10.x的Resolver,例如lts-18.28(对应GHC 8.10.7)。修改项目配置
打开项目根目录的stack.yaml文件,修改resolver字段:resolver: lts-18.28运行项目
执行以下命令,Stack会自动下载并使用指定版本的GHC,完成依赖安装和项目运行:stack run
内容的提问来源于stack exchange,提问作者Peter Job
相关产品推荐
相关产品推荐

