必须用ghcup而非apt或haskell-platform,因其提供最新ghc(如9.10/9.12)、避免旧版base约束与依赖冲突,且haskell-platform已于2018年弃用;apt源版本滞后2–3大版本,导致cabal build失败、stack setup卡顿、hls启动报错。

直接用 ghcup 安装,别碰 haskell-platform 或系统包管理器(如 apt install ghc),后者版本老旧、依赖混乱、更新停滞。
为什么必须用 ghcup 而不是 apt 或 haskell-platform
apt 仓库里的 ghc 通常比当前稳定版落后 2–3 个大版本(比如 Ubuntu 24.04 自带 GHC 9.4,而 2026 年主流是 GHC 9.10/9.12);haskell-platform 已于 2018 年正式弃用,其打包的 cabal、stack 和库集无法适配现代 Hackage 生态。实际项目中会遇到:
-
cabal build报错Could not resolve dependencies—— 因为旧 GHC 默认用过时的base版本约束 -
stack setup卡在下载ghc-9.10.1的 tarball —— 系统源没提供,而ghcup自动走镜像 - 编辑器插件(如 HLS)启动失败 —— 日志里明确提示
Expected GHC 9.10+, got 8.10.7
标准安装流程(含国内镜像加速)
执行以下命令即可完成完整工具链安装(GHC + cabal + hls + stack):
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.ustc.edu.cn/ghcup/sh/bootstrap-haskell | \ BOOTSTRAP_HASKELL_YAML=https://mirrors.ustc.edu.cn/ghcup/ghcup-metadata/ghcup-latest.yaml sh
安装完成后,**必须重新加载 shell 配置**:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 如果是 Bash:
source ~/.bashrc - 如果是 Zsh:
source ~/.zshrc - 如果用 Fish:
source ~/.config/fish/config.fish
验证是否生效:
ghc --version<br>cabal --version<br>haskell-language-server --version
常见失败点和绕过方式
安装中途报错 Permission denied 或 cannot write to /usr/local/bin:
- 说明你之前手动改过
/usr/local/bin权限,或用了 root 运行过其他 Haskell 工具 - 解决:加
GHCUPTARGET=$HOME/.local/bin前缀重试,例如:GHCUPTARGET=$HOME/.local/bin curl ... | sh - 然后把
$HOME/.local/bin加进$PATH(写入~/.bashrc)
执行 ghcup list 显示空白或超时:
- 不是网络问题,而是
ghcup元数据缓存损坏 - 运行
ghcup clean清空缓存,再重试 - 避免用
sudo ghcup—— 它不支持 root 模式,强行使用会导致后续所有命令拒绝写入
装完之后第一件事:别急着写代码
先确认 cabal update 能成功拉取最新包索引(耗时约 1–2 分钟),再跑一次 cabal exec -- ghci 测试交互环境是否识别已安装的 GHC 版本。如果 ghci 启动后显示 Prelude> 但输入 import Data.Text 报错 Could not find module,说明 cabal 没绑定当前 GHC 的包数据库 —— 这时要运行 cabal v2-repl 而不是裸 ghci。这个细节,90% 的新手会在第一个模块导入时卡住。










