怎样在国内网络环境安装和运行 Haskell Stack

  • 首次发布:2022-03-15
  1. 国内镜像地址

    hackage 镜像

    stackage 镜像

  2. 从任一 stackage 镜像下载 stack binary release.

    例如,目前 http://mirrors.ustc.edu.cn/stackage/stack/ 文件夹中,最新的版本是 http://mirrors.ustc.edu.cn/stackage/stack/stack-2.7.5-linux-x86_64-static.tar.gz 解压缩后复制到任一 PATH 目录。运行 stack --version 检查是否安装成功。

  3. 配置 hackage 和 stackage 镜像.

    参考 Hackage 源使用帮助 Stackage 源使用帮助

    配置全局 stack 选项和配置。需要创建/修改以下文件:

    • ~/.stack/config.yaml

    • ~/.stack/global-project/stack.yaml

    • ~/.stack/pantry/global-hints-cache.yaml

  4. 进入准备构建的 Haskell 项目目录,运行 stack update 下载 resolver 对应的 package index. 这个 index 没有国内镜像,只能从 github 拉取。 需要科学上网。 在这里我使用本地的 HTTP 代理服务器。

    export HTTPS_PROXY=127.0.0.1:8123
    stack update
    

    取消翻墙,构建你的项目,如果本地没有合适resolver的ghc,stack会自动从镜像站下载ghc。

    export HTTPS_PROXY=
    stack setup    # optional
    stack build -j3 --pedantic --test
    
  5. 后续构建同一项目,只需进入项目目录,然后执行

    stack build -j3 --pedantic --test
    

    如果要构建另一个使用不同 resolver 的项目,则需要再次翻墙获取 package index.

  6. 总结:在国内使用stack构建Haskell项目,最好有合适的科学上网工具,不然可能还是会卡住。