如何修复WSL Ubuntu环境下使用ghcup安装GHC的报错问题
报错原因
- 直接触发原因可从报错日志定位:安装过程调用的
strip工具无法识别Linux 64位ELF二进制,导致处理后的GHC相关文件结构异常,后续ghc-pkg工具无法正常修改包数据库,最终make安装流程失败。 - 根因分为三类:
- WSL默认将Windows系统路径加入到Linux环境的PATH中,安装时优先调用了Windows原生的
strip程序,而非WSL Ubuntu自带的GNUstrip,Windows版本的strip无法处理Linux格式的二进制文件。 - 若当前使用WSL1,其对Linux系统调用的兼容度不足,无法支持GHC安装过程中的部分文件操作逻辑。
- 之前安装残留的异常文件、
~/.ghcup目录权限不足,也会导致写入失败。
- WSL默认将Windows系统路径加入到Linux环境的PATH中,安装时优先调用了Windows原生的
解决方法
按优先级尝试以下方案:
方案1:临时屏蔽Windows路径+禁用strip安装
- 先执行命令清理历史残留:
rm -rf ~/.ghcup rm -rf /tmp/ghcup-*
- 临时修改PATH变量,仅保留Linux系统路径:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - 重新执行安装命令,额外添加
--no-strip参数跳过strip处理:ghcup install ghc recommended --no-strip - 安装完成后执行
ghcup set ghc 8.10.7即可正常使用。
方案2:升级WSL版本
若方案1无效,在Windows CMD/PowerShell中执行命令检查WSL版本:wsl --list --verbose
如果对应Ubuntu子系统的版本为1,建议升级到WSL2,升级完成后重新执行方案1的安装步骤即可。
方案3:使用系统源安装
若不需要灵活切换GHC版本,可直接使用Ubuntu官方源安装:sudo apt update && sudo apt install -y ghc cabal-install
内容的提问来源于stack exchange,提问作者NFTLevi
相关产品推荐
相关产品推荐

