我花了大约一个小时的时间来尝试获取Cabal的第2版。最初,我发现LinuxMint安装随附的版本是版本1,因此我尝试cabal update
并没有这样做。因此,我找到了使用cabal install Cabal cabal-install
的说明。做到了,出现错误。发现该错误显然与使用最新版本的Haskell有关。所以我安装了版本7以获取Cabal。似乎可以正常工作,好像我终于有了Cabal版本2。但是我也想要最新版本的Haskell,所以我为它下载了二进制文件并重新安装了它-现在看来Cabal已设置回版本1。无法同时拥有Haskell的版本8和Cabal的版本2?
答案 0 :(得分:7)
根据danidiaz的评论,我建议直接在您的主目录中安装cabal-install。
首先要确保您实际上正在使用所需的GHC的8.x版本(如有需要,请使用which ghc
和ghc --version
)。另外,请摆脱可能已安装的所有其他Cabal安装版本,以减少混乱的可能性。
[目录]
~/.cabal/bin
不在我的PATH
变量中,我应该将其放在其定义的前面吗?
完全正确。 ~/.cabal/bin
是使用cabal-install在本地安装的可执行文件的默认位置,其中包括cabal-install本身,因此必须位于PATH中。将其放在PATH的前面将使其优先于与软件包管理器一起安装的cabal-install的所有系统级安装。 (请注意,如果您事先删除了上述系统范围的安装,这将不是问题。)
清除地形后,您可以从Cabal's download page下载合适的二进制tarball,提取可执行文件并将其放入~/.cabal/bin
。正如danidiaz所指出的,二进制文件不一定是最新的稳定版本(在我写这篇文章时,Linux二进制文件是2.2.0.0而不是2.4.0.0),但这可能无关紧要,因为一旦有了某个版本可以进行Cabal-install的安装,只需运行...
cabal new-update # For version 2.4 or above; if not, use cabal update instead.
cabal new-install cabal-install
...,这会将cabal-install更新到最新的稳定版本。
(请注意,我正在使用the new-* cabal-install commands。我强烈建议您这样做。)
此外,浏览Cabal文件夹,我看不到二进制文件。出现的唯一文件夹是分发,语言,测试和文档。
听起来您是下载了Cabal的资源(库),而不是下载了cabal-install的工具。也可以从上面链接的下载页面中获得cabal安装源(在我写此文件时,其版本为2.4.0.0)。如果要获取它们from GitHub,则应该查看cabal-install
目录,而不是Cabal
目录。不管哪种方式,一旦您位于适当的目录中,都可以从源代码运行...
./bootstrap.sh --sandbox
...仅需要GHC(而不是预先存在的cabal安装)。一旦完成了cabal-install的构建,该脚本将告诉您可执行文件的位置(大概在.cabal-sandbox/bin
子目录中)。将可执行文件复制到~/.cabal/bin
并继续进行操作。