如何将Haskell Stack及构建产物安装到非C盘(Windows环境)
解决Windows下Haskell Stack迁移至非C盘及本地项目构建问题
1. 迁移Haskell Stack安装目录
- 卸载Chocolatey安装的Stack:打开管理员PowerShell执行
choco uninstall haskell-stack -y - 下载对应版本(2.11.1)的Windows二进制包,解压到
D:\HaskellStack\stack,确保stack.exe在该目录下 - 编辑用户环境变量
Path,添加D:\HaskellStack\stack,移除原C盘Stack的路径 - 验证:新开PowerShell执行
stack --version,确认版本与路径正确
2. 迁移全局存储目录(C:\sr)
- 关闭所有Stack进程,复制
C:\sr到D:\HaskellStack\sr - 删除原
C:\sr目录(复制完成后操作) - 配置全局存储路径:
方法一:添加用户环境变量STACK_ROOT,值设为D:\HaskellStack\sr
方法二:执行PowerShell命令stack config set root D:\HaskellStack\sr --global - 验证:执行
stack path --root,输出应为D:\HaskellStack\sr
3. 配置本地项目构建,避免全局环境写入
针对小型项目,可让所有构建产物、依赖局限在项目目录内:
- 初始化项目时指定本地配置:
(stack init --resolver lts-21.25 --local-bin-path ./bin --work-dir ./stack-worklts-21.25可替换为适配的快照版本,./bin为本地二进制输出目录,./stack-work为构建临时文件目录) - 编辑项目根目录的
stack.yaml,添加以下配置强制本地化:package-indices: - download-prefix: https://hackage.haskell.org/package/ hackage-security: keyids: - 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d - 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42 - 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833 - 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201 - 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3 - 51f0161b906011b52c6613366b9b610b6e3c31748276e4a6f934c12f00d0645c - 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d - aa315286e6ad281ad61182235533c41e806e5a78a92a4fdfb6c0b928cf92d106 - fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0 key-threshold: 3 work-dir: ./stack-work local-bin-path: ./bin install-global: false - 后续构建、测试直接在项目目录执行:
所有产物将存放在项目目录的stack build stack teststack-work和bin中,不会写入C盘或全局环境
4. 验证配置
执行stack path,检查输出中的root、local-bin-path、work-dir是否符合预期;构建项目后确认C盘原Stack路径无新增文件。
内容的提问来源于stack exchange,提问作者Piskator
相关产品推荐
相关产品推荐

