如何更新到 GHC 8.0

How to update to GHC 8.0

我正在尝试使用量子编程语言 Quipper,但由于我使用的 GHC 版本,我 运行 遇到了问题:

root@ubuntu:~$ apt-show-versions ghc
ghc:amd64/xenial 7.10.3-7 uptodate
ghc:i386 not installed

事实证明,7.10 是 Quipper 无法编译的唯一版本。

然后我发现显然 only way 安装 Haskell 8.0 正在使用 haskell-stack。好吧,我从来没有在堆栈上安装过东西,所以这会很好。

所以我使用 this website 上的说明安装 haskell-stack,然后 运行 命令:

root@ubuntu:~$ stack setup
root@ubuntu:~$ stack update
root@ubuntu:~$ stack install ghc

最后一条命令返回以下内容:

Didn't see ghc-8.0.2 in your package indices.
Updating and trying again.
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                  Selected mirror https://s3.amazonaws.com/hackage.fpcomplete.com/
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                    Downloading timestamp
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                                Downloading snapshot
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                                    Updating index   
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                                Updated package list downloaded
Updating package index Hackage (mirrored at https://s3.amazonaws.com/hackage.fpc                                                                                    Populated index cache.    
The following package identifiers were not found in your indices: ghc-8.0.2
Perhaps you meant AAI, AAI, AAI, AES, AES, AES, AES, AES, AES, or AES?

所以,再次快速检查:

root@ubuntu:~$ apt-show-versions ghc
ghc:amd64/xenial 7.10.3-7 uptodate
ghc:i386 not installed

不,还是7.10。还尝试从 this website 下载软件包。包提取失败,这是一个好兆头。冲洗并重复上述命令,仍然没有。然后我编辑 stack.yaml 文件说:

resolver: lts-9.14
resolver: ghc-8.0.2

什么也没做。我错过了什么步骤?当人们基本上说 "the stack does everything for you" 而我喜欢 "what exactly am I supposed to do?"

时,这令人沮丧

编辑

正如我上面所说,从 haskell.org 下载 8.0.2 的软件包无法提取存档:

GHC 的二进制分布可以从 GHC HQ:

获得

关于获得 GHC 必须使用任何一种工具的说法都是错误的。

编辑:例如,在 nix 计算机上,可以执行以下操作(大约,未测试):

wget https://downloads.haskell.org/~ghc/8.2.2/ghc-8.2.2-x86_64-deb8-linux.tar.xz
tar xJf ghc-8.2.2*
cd ghc*
./configure --prefix=$HOME
make install

如果您不喜欢便携 shell 并且真的想使用 apt,那么可以考虑使用非常流行的 hvr's PPA

不要直接安装二进制文件。虽然正如其他人提到的那样,堆栈并不是唯一的方法,但它肯定是更简单的方法之一。

首先,stack setup 实际上会根据它找到的解析器为您下载 GHC。如果您不在堆栈项目中,它将默认为全局堆栈配置。另一方面 stack install 用于安装包。这意味着 stack install ghc 试图在称为 ghc 的堆栈上寻找 ,我认为其中没有。

到 运行 堆栈安装的 GHC,你会做 stack ghc 并获得 GHCi 会话,stack ghci(通常只需以堆栈为前缀)。

您还可以 运行 一般 stack exec -- .. 到 运行 带有堆栈路径变量的命令。例如。 stack exec -- ghci 也可以在这里使用,或者 stack exec -- ghc --version 获取 GHC 版本。