【问题标题】:Haskell and Cabal missing after El Capitan update在 El Capitan 更新后 Haskell 和 Cabal 失踪
【发布时间】:2015-09-30 20:19:16
【问题描述】:

升级到 OS X El Capitan 后,Cabal 和 GHC 在我的系统上不再存在:

-bash: ghc: command not found
-bash: cabal: command not found

我需要做什么才能让 Cabal 和 GHC 在 OS X El Capitan 上工作?

【问题讨论】:

  • 如果可以,请在 HP github 站点上为此创建一个问题,以便对其进行跟踪:github.com/haskell/haskell-platform/issues 另外 - 程序是否仍然存在于 /usr/bin 中(但不可执行)还是升级完全删除了它们?
  • 升级会清除所有/usr/usr/local 除外)的任何非 Apple 产品。

标签: haskell ghc cabal osx-elcapitan


【解决方案1】:

我发现以下方法在包括 El Capitan 在内的所有 OSX 版本上最可靠。

  1. Install Homebrew

  2. 运行brew install ghc

  3. 运行brew install cabal-install

这种方法允许您轻松安装最新版本并安装多个版本,并使用brew switch 命令在它们之间轻松切换。 Haskell 平台缺少这些属性,这就是高级用户倾向于避免使用它的原因。

【讨论】:

  • 这是个好主意。如何摆脱现有的 Haskell 平台安装(我想先清理它)?我在/Users/Roy/Library/Haskell/ghc-7.10.2-x86_64/lib 中的现有包会保留吗?我还能使用它们吗?
  • 如果没有更好的方法,您可以简单地删除文件(安装和软件包目录)。即使您不做任何事情,我也不希望出现任何冲突。 Brew 安装的 Cabal 使用不同的目录结构,因此您必须稍作改动才能保留软件包,但我宁愿放弃它们,让 Cabal 完成工作并在需要时安装它们。
  • 听起来很有希望。 Homebrew 将安装的软件包放在哪里?就此而言,它把stylish-haskellhlint 的可执行文件放在哪里——我找不到它们?
  • 我似乎还有一个~/Library/Haskell,我想我应该删除它(Homebrew cabal install 不应该把东西放在那里吗?)
  • 对。你可以把旧的东西扔掉。 “自制”设置的库和可执行文件都安装在 ~/.cabal 的子目录中。
【解决方案2】:

编辑:现在有一个released version 可以解决这些问题。

这都是由 El Capitan 中新的“rootless security”功能引起的。

您无需复制或重新安装程序——/usr/bin 中的文件始终只是符号链接,指向/Library/Frameworks/GHC.framework//Library/Frameworks/HaskellPlatform.framework 中可用的内容。所以你应该可以从那里再次对它们进行符号链接(这次是/usr/local/bin)。

另见https://github.com/haskell/haskell-platform/issues/205

希望修复这些问题的新平台版本很快就会发布。

【讨论】:

  • FWIW,我昨晚测试了候选人,它似乎工作得很好。 (而且我昨晚已经向 sclv 报告了这个,所以这不算是额外的成功报告。)
【解决方案3】:

我相信 El Capitan 不允许用户再更改 /usr,这是安装 Haskell 二进制文件的位置。

如果您可以将程序复制/安装到/usr/local/bin,它们应该可以从那里工作。

如果这些程序在 /usr/bin 中不再可见,我建议将 HP 重新安装到不同的分区。然后将它们复制到 /usr/local。

告诉我进展如何。

【讨论】:

  • 是否计划更新 GHC 或 Cabal 以解决此问题。手动移动东西似乎有点脆弱。
  • 顺便说一句:复制不是一种选择,因为 EC 安装似乎删除了它在 /usr 中不喜欢的任何内容。
猜你喜欢
  • 2016-01-06
  • 2016-03-11
  • 2016-01-16
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多