在删除全局Stack配置后,如何恢复Haskell Stack与 ghcup的集成?

编程语言 2026-07-12

我用ghcup安装了Haskell构建工具Stack。

在设置ghcup的过程中,它会提供一个选项,让Stack使用ghcup来管理ghc的版本。这很方便,因为它使Stack项目能够更容易地使用ghcup安装的haskell-language-server二进制文件。

在排查一个无关的问题时,我最近删除了我的Stack配置(~/.stack)。这导致我丢失了 ghcup 的集成。

我该如何恢复它?

解决方案

ghcup文档 中,有关于如何手动将Stack与 ghcup集成的说明:

# Change to the Stack root directory:
cd `stack path --stack-root`
# Make a hooks directory (if it does not exist):
mkdir hooks
# Change to that hooks directory:
cd hooks
# Download GHCup's ghc-install.sh file:
curl -O https://raw.githubusercontent.com/haskell/ghcup-hs/master/scripts/hooks/stack/ghc-install.sh
# On Unix-like operating systems only, mark file as executable:
chmod +x ghc-install.sh
# Hooks are only run when 'system-ghc: false' (Stack's default):
stack config set system-ghc false --global

然而,在实际操作中,我发现直接重新安装ghcup,并在安装过程中选择启用Stack集成的选项要简单得多(ghcup文档指出 这可以安全地重新执行)。

重新安装ghcup可以按照 ghcup安装页面 的描述来完成:

对于Linux、macOS、FreeBSD或 Windows Subsystem 2 for Linux,在终端中运行以下命令:

bash curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

对于Windows,请在PowerShell会话中运行以下命令:

bash Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; try { & ([ScriptBlock]::Create((Invoke-WebRequest https://www.haskell.org/ghcup/sh/bootstrap-haskell.ps1 -UseBasicParsing))) -Interactive -DisableCurl } catch { Write-Error $_ }

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章