如何更新到GHC 8.0

时间:2017-11-25 19:03:58

标签: haskell ghc haskell-stack

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

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

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

然后我发现显然安装Haskell 8.0的only way使用的是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

绝对没有。我错过了什么步骤?当人们基本上说'#34;堆栈为你做了一切时,它令人沮丧。而且我喜欢"我到底应该做什么?"

修改

如上所述,从haskell.org下载8.0.2软件包无法提取存档:

Failure message of archive extraction

2 个答案:

答案 0 :(得分:2)

不要直接跳转到安装二进制文件。虽然正如其他人所说,堆栈不是唯一的方法,但它肯定是更容易的方式之一。

首先,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版本。

答案 1 :(得分:1)

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

如果您不喜欢便携式外壳并且真的想使用apt,那么请考虑使用非常受欢迎的hvr's PPA