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

如何创建等效于无环境文件的GHC包环境文件?适配指定版本

创建包含GHC默认暴露包的环境文件的简便方法

针对GHC 9.8.2和Cabal 3.10.3.0版本,有两种优雅的方案可以生成包含所有默认暴露包的环境文件:

方案一:直接用ghc-pkg导出全局默认包

GHC自带的默认包都存放在全局包数据库里,通过ghc-pkg可以直接提取这些包名并生成环境文件:

ghc-pkg dump --global --package-db=clear --package-db=global | grep '^name: ' | sed 's/name: //' > ghc-defaults.env
  • --global 指定只读取GHC的全局包数据库
  • --package-db=clear --package-db=global 确保忽略用户自定义和项目本地的包数据库,只保留默认全局包
  • 后续的grep和sed用来提取并格式化包名,最终输出到目标环境文件

方案二:借助Cabal自动生成默认环境

利用Cabal构建时自动生成环境文件的特性,快速获取包含默认包的环境配置:

# 创建临时项目目录
mkdir temp-env-gen && cd temp-env-gen
# 初始化一个极简的Cabal项目
cabal init --non-interactive --exe --name=temp-proj
# 执行 dry-run 触发环境文件生成,无需实际编译
cabal build --dry-run
# 复制生成的环境文件到目标位置
cp dist-newstyle/cache/ghc-environment-* ../ghc-defaults.env
# 清理临时文件
cd .. && rm -rf temp-env-gen

Cabal在构建前会自动生成包含默认依赖包的环境文件,--dry-run参数避免了不必要的编译操作,节省时间。

验证生成的环境文件

生成后可以用以下命令确认环境文件包含所有默认包:

ghc-pkg list --package-env=ghc-defaults.env

内容的提问来源于stack exchange,提问作者Joseph Sible-Reinstate Monica

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:32:43