wxHaskell当前是否无法使用?Ubuntu环境安装wx包依赖冲突求助
问题原因
你对问题的初步判断是正确的,wx 0.92.3.0版本对containers包的版本约束为>=0.1 && <0.6,而GHC 8.8.4预装的containers版本为0.6.2.1,二者存在版本冲突,所以会出现首次安装的依赖解析报错。
你调高--max-backjumps参数后,Cabal为了满足依赖约束,自动选择了发布于2012年的wxcore 0.11.1.2旧版本,该版本与Ubuntu 21.04内置的wxWidgets运行库完全不兼容,因此会在configure阶段直接报错退出。
可用解决方案
- 方案一:使用Cabal约束绕过版本限制
不使用全局安装的方式,创建本地Cabal项目,在项目根目录的cabal.project文件中添加如下规则,强行允许wxcore使用高版本containers:
先安装系统层面的wxWidgets依赖:allow-newer: wxcore:containerssudo apt install libwxgtk3.0-gtk3-dev libwxbase3.0-dev
之后在项目目录下执行cabal build即可正常引入wx包,该方案适合临时测试使用,由于是强行绕过版本约束,存在极小概率出现运行时异常。 - 方案二:使用兼容版本的GHC环境
用ghcup安装GHC 8.6.5版本,该版本GHC内置的containers版本为0.5.x,完全符合wx 0.92.3.0的版本要求,切换到该GHC版本后再执行cabal install wx --lib,可以无冲突完成安装,兼容性最好,适合长期使用wxHaskell开发的场景。 - 方案三:编译开发版源码
wxHaskell的官方源码仓库已经提交了适配containers 0.6+的修复代码,只是还没有发布正式版本,将源码克隆到本地后手动编译安装,即可适配当前的GHC 8.8.4环境。
wxHaskell可用性说明
wxHaskell目前并未完全不可用,只是维护进度非常缓慢,正式版本更新滞后已有数年,仅适合个人学习、小型项目使用,如果是开发生产级桌面应用,更建议选择维护更活跃的其他Haskell GUI绑定库。
内容的提问来源于stack exchange,提问作者Dannyu NDos
相关产品推荐
相关产品推荐

