您如何获得 Haskell 的最新版本的 Cabal?
How do you get the most recent version of Cabal for Haskell?
我刚刚花了大约一个小时来寻找 Cabal 的第 2 版。最初我发现我的 LinuxMint 安装附带的版本是版本 1,所以我尝试了 cabal update
,但没有成功。所以我找到了使用 cabal install Cabal cabal-install
的说明。搞定了,报错。发现该错误显然与使用 Haskell 的最新版本有关。所以我安装了版本 7 来获取 Cabal。似乎工作正常,看起来我终于得到了 Cabal 版本 2。但我也想要 Haskell 的最新版本,所以我下载了它的二进制文件并再次安装——现在 Cabal 似乎被设置回版本1. Haskell 版本 8 和 Cabal 版本 2 不能同时拥有吗?
根据 danidiaz 的评论,我建议直接在您的主目录中安装 cabal-install。
首先确保您实际使用的是所需的 8.x 版本的 GHC(如果需要,请使用 which ghc
和 ghc --version
)。此外,删除您可能已安装的任何其他 cabal-install 版本,以减少混淆的余地。
The [directory] ~/.cabal/bin
is not in my PATH
variable, should I put it in toward the front of its definition?
没错。 ~/.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。我强烈建议您也这样做。)
Also, looking through the Cabal folder, I don't see binaries. The only folders present are Distribution, Language, tests, and doc.
听起来您下载的是库 Cabal 的源代码,而不是工具 cabal-install 的源代码。 cabal-install 源也可以从上面链接的下载页面获得(在我写这篇文章时,它们的版本是 2.4.0.0)。如果您得到的是 from GitHub,您应该查看 cabal-install
目录,而不是 Cabal
目录。无论哪种方式,一旦你在适当的目录中,从源安装 运行...
./bootstrap.sh --sandbox
... 只需要 GHC(而不是预先存在的 cabal-install)。一旦完成构建 cabal-install,脚本将告诉您可执行文件的位置(大概在 .cabal-sandbox/bin
子目录中)。将可执行文件复制到 ~/.cabal/bin
并像以前一样继续。
我刚刚花了大约一个小时来寻找 Cabal 的第 2 版。最初我发现我的 LinuxMint 安装附带的版本是版本 1,所以我尝试了 cabal update
,但没有成功。所以我找到了使用 cabal install Cabal cabal-install
的说明。搞定了,报错。发现该错误显然与使用 Haskell 的最新版本有关。所以我安装了版本 7 来获取 Cabal。似乎工作正常,看起来我终于得到了 Cabal 版本 2。但我也想要 Haskell 的最新版本,所以我下载了它的二进制文件并再次安装——现在 Cabal 似乎被设置回版本1. Haskell 版本 8 和 Cabal 版本 2 不能同时拥有吗?
根据 danidiaz 的评论,我建议直接在您的主目录中安装 cabal-install。
首先确保您实际使用的是所需的 8.x 版本的 GHC(如果需要,请使用 which ghc
和 ghc --version
)。此外,删除您可能已安装的任何其他 cabal-install 版本,以减少混淆的余地。
The [directory]
~/.cabal/bin
is not in myPATH
variable, should I put it in toward the front of its definition?
没错。 ~/.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。我强烈建议您也这样做。)
Also, looking through the Cabal folder, I don't see binaries. The only folders present are Distribution, Language, tests, and doc.
听起来您下载的是库 Cabal 的源代码,而不是工具 cabal-install 的源代码。 cabal-install 源也可以从上面链接的下载页面获得(在我写这篇文章时,它们的版本是 2.4.0.0)。如果您得到的是 from GitHub,您应该查看 cabal-install
目录,而不是 Cabal
目录。无论哪种方式,一旦你在适当的目录中,从源安装 运行...
./bootstrap.sh --sandbox
... 只需要 GHC(而不是预先存在的 cabal-install)。一旦完成构建 cabal-install,脚本将告诉您可执行文件的位置(大概在 .cabal-sandbox/bin
子目录中)。将可执行文件复制到 ~/.cabal/bin
并像以前一样继续。