覆盖 LTS 的 cabal 版本

Override the cabal version of an LTS

我有一个项目想用 LTS 2 编译,但我无法解决 this well-known bug in OS X 10.11

我能否以某种方式指定更新版本的 Cabal 以与 ghc-7.8.4 一起使用?请注意,该项目仅真正使用 GHC 7.8.*.

进行编译

编辑:

真正的意思是 Cabal,而不是 cabal-install

编辑 2:

实际上,这个问题的答案并没有真正解决我的具体问题(编译helium,需要GHC <= 7.8.4),因为这个bug不是特定于Cabal ,而是 GHC < 7.10 所依赖的 unix

我认为问题不仅与 Cabal 库版本有关(顺便说一句,堆栈不使用或不需要 cabal-install),还与 GHC 版本有关。 Stack 的常见问题解答提到了 item about this error,但我认为它对我没有帮助,我当时刚刚升级到 7.10.2。

以下是将 ghc-7.8.4 安装到您选择的目录的方法:

  1. https://www.haskell.org/ghc/download_ghc_7_8_4#macosx_x86_64
  2. 下载 "bindist"
  3. 将其解压到临时目录
  4. 创建目标目录,例如$HOME/my-prefix.
  5. 在暂存目录中运行:

    $ ./configure --prefix=$HOME/my-prefix
    $ make install
    

现在可以在 $HOME/my-prefix/bin 中找到 ghc。

中所述,有 stack setup --upgrade-cabal 可以做到这一点。这就是这个问题的答案。


在我的具体情况下(XY 问题),为了使它起作用,我必须对 that El Capitano related bug, which is explained here 进行通常的解决方法。所以我启用了 rootless,运行 升级命令并重新启用了 rootless。

恐怕无济于事:该错误特定于 unix < 2.7.1.0,GHC 7.8.4 也依赖于它。所以即使在升级 cabal 之后,我也无法在 lts-2 中编译任何东西,除非我禁用 rootless,这很烦人。

实际上 the GHC folks decided not to file a new minor release 与更新的 unix 包有点令人沮丧。这意味着没有 realistic/recent OS X 配置可以构建任何涉及 GHC < 7.10 的东西。