如何在WSL环境下运行stack ghci,hLock无效参数报错如何解决?
这个报错是WSL1的文件锁机制不兼容GHC安装时的锁调用导致的,按照以下步骤处理:
步骤1:确认WSL版本
在Windows的cmd或PowerShell中执行命令:wsl --list --verbose
查看你当前运行的Ubuntu 20.04对应的VERSION字段,如果为1,就是本次报错的核心原因。
解决方案1(推荐):升级到WSL2
- 先在Windows「启用或关闭Windows功能」中勾选「虚拟机平台」,重启系统生效
- 打开PowerShell执行:
wsl --set-default-version 2 - 再执行命令转换现有Ubuntu发行版的WSL版本:
wsl --set-version Ubuntu-20.04 2
等待转换完成后,进入WSL环境执行以下命令清理残留的错误安装文件:rm -rf ~/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7*
重新运行stack ghci即可正常完成GHC安装。
解决方案2(无法升级WSL2时使用):禁用Stack的文件锁策略
如果你暂时不能升级到WSL2,可以修改Stack配置规避锁兼容问题:
- 编辑Stack全局配置文件:
vim ~/.stack/config.yaml - 在配置文件中添加一行:
lock-policy: none
- 保存退出后,执行命令清理残留的错误安装文件:
rm -rf ~/.stack/programs/x86_64-linux/ghc-tinfo6-8.10.7* - 重新运行
stack ghci即可正常安装。
内容的提问来源于stack exchange,提问作者Evgeniy Tishin
相关产品推荐
相关产品推荐

