You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cabal包安装与更新问题求助

解决Ubuntu 16.04上Cabal版本过低导致的threadscope安装问题

你现在遇到的是旧Ubuntu系统上Haskell工具链常见的依赖冲突问题——Ubuntu 16.04自带的Cabal和GHC版本都偏老,安装threadscope需要更高版本的Cabal,但直接升级最新Cabal又因为系统base库版本不够失败。下面给你几个实用的解决方案:

方案一:用ghcup升级工具链(最推荐)

ghcup是Haskell官方推荐的工具链管理工具,能帮你轻松安装兼容的GHC和Cabal版本,不会和系统自带的工具冲突。

执行以下命令安装ghcup:

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

(如果curl无法使用,也可以用wget替代:wget https://get-ghcup.haskell.org -O - | sh)

安装过程中会引导你配置环境变量,按照提示完成后,重启终端或者执行source ~/.bashrc(如果你用zsh,就执行source ~/.zshrc)让配置生效。

接下来安装一个兼容Ubuntu 16.04的GHC版本(比如8.6.5,它对应的base库版本能满足Cabal 2.4的要求):

ghcup install ghc 8.6.5
ghcup set ghc 8.6.5

然后升级Cabal到兼容的版本:

ghcup install cabal 2.4.1.0
ghcup set cabal 2.4.1.0

最后更新Cabal包索引并安装threadscope:

cabal update
cabal install threadscope

方案二:手动安装兼容版本的cabal-install

如果不想用ghcup,可以直接下载适配你当前GHC版本的cabal-install二进制包。Ubuntu 16.04自带的GHC大概是8.0.1(对应base 4.11.1.0),你需要找一个依赖Cabal库>=1.24且支持base 4.11的cabal-install版本,比如cabal-install-2.4.1.0。

  1. 下载对应x86_64架构的二进制包:
wget https://downloads.haskell.org/~cabal/cabal-install-2.4.1.0/cabal-install-2.4.1.0-x86_64-linux.tar.xz
  1. 解压到本地用户的bin目录(比如~/.local/bin,确保这个目录在你的系统PATH环境变量中):
tar xJf cabal-install-2.4.1.0-x86_64-linux.tar.xz
mv cabal ~/.local/bin/
  1. 更新Cabal包索引并安装threadscope:
cabal update
cabal install threadscope

方案三:用Stack安装threadscope

Stack是另一个Haskell包管理工具,它会自动为项目下载合适的GHC版本,完全避开系统工具链的冲突问题。

  1. 安装Stack:
curl -sSL https://get.haskellstack.org/ | sh
  1. 直接安装threadscope:
stack install threadscope

Stack会自动下载所需的GHC和所有依赖包,安装完成后,threadscope的可执行文件会放在~/.local/bin目录下,确保这个目录在PATH中就能直接运行。


为什么之前的升级尝试失败?

你尝试安装的Cabal-3.0.0.0要求base库版本>=4.13.0,但Ubuntu 16.04自带的GHC对应的base版本是4.11.x,不满足这个要求,所以编译失败。而threadscope依赖的cairo、glib等包需要Cabal库版本>=1.24,你的系统自带的1.22.x版本无法满足,这就是核心矛盾。上面的方案都是通过升级到兼容的工具链版本来解决这个问题。

内容的提问来源于stack exchange,提问作者Yaldaba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:02:31