Stackage 镜像使用说明

@Justin Wong 的帮助下,我在 TUNA 镜像站上搭建起了 Stackage 镜像,方便国内使用 stack 的 Haskell 开发者。在 stack 的全局配置文件(Linux/OSX 下默认为~/.stack/config.yaml,Windows下默认为%APPDATA%\stack\config.yaml)里这样写即可:
package-indices:
- name: Tsinghua
  download-prefix: https://mirrors.tuna.tsinghua.edu.cn/hackage/package/
  http: https://mirrors.tuna.tsinghua.edu.cn/hackage/00-index.tar.gz
setup-info: "http://mirrors.tuna.tsinghua.edu.cn/stackage/stack-setup.yaml"
urls:
  latest-snapshot: http://mirrors.tuna.tsinghua.edu.cn/stackage/snapshots.json
  lts-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/lts-haskell/
  nightly-build-plans: http://mirrors.tuna.tsinghua.edu.cn/stackage/stackage-nightly/

然后,stack 工具下载 Hackage 包、Stackage snapshot 配置文件、ghc 安装包的位置都在 TUNA 镜像站,不需要像之前一样走 github/s3,速度就上去了(尤其是 stack setup 命令)。

很久以前我写过一篇 Haskell 开发环境配置的教程,当时推荐的 Haskell 包管理器是 cabal-install 而非 stack,一大原因就是考虑国内网络条件,使用 stack 多有不便,不过现在就没有这个问题了。时过境迁,这两个工具都进化了许多,Cabal hell 的问题因为 sandbox 和 new-build 功能,已经不再困扰 cabal-install ,而 stack 则实现了 Docker/Nix 集成,可以无痛管理 non-Haskell 依赖库并进行部署。要是有人感兴趣的话,等过完年我可以再出更新版的配环境教程,追加一些原来那版没覆盖的内容。

预祝大家新年快乐。

文章被以下专栏收录