【问题标题】:Haskell platform on mac installs cabal in /usr/bin, but cabal install goes in ~/Library/Haskellmac 上的 Haskell 平台将 cabal 安装在 /usr/bin 中,但 cabal 安装在 ~/Library/Haskell
【发布时间】:2014-09-11 08:35:56
【问题描述】:

我刚刚在运行 Mavericks 10.9 的 Mac 上安装了 Haskell 平台。包含的 cabal 版本 (1.16) 已过期,并提示我运行“cabal update”,然后运行“cabal install cabal-install”。这样做会安装 cabal 1.20.0.3,但它会安装在 ~/Library/Haskell 中。这不在我的可执行路径中,因此进一步尝试运行 cabal 会导致从 /usr/bin 执行 1.16 版,该版本未更新。

我想我可以通过将我的可执行路径更改为包含 ~/Library/Haskell 来解决这个问题,优先级高于 /usr/bin。但我真的不想这样做。而且我不想在我的系统上的隐藏位置维护多个过时的软件版本。如何让 cabal 在正确的位置更新可执行文件?使用 sudo 运行没有帮助。

编辑:更新了我的路径,但不知何故它仍然不起作用:

[76 of 76] Compiling Main             ( Main.hs, dist/build/cabal/cabal-tmp/Main.o )
Linking dist/build/cabal/cabal ...
Warning: No documentation was generated as this package does not contain a library. Perhaps you want to use the --executables flag.
Installing executable(s) in
/Users/lethe/Library/Haskell/ghc-7.6.3/lib/cabal-install-1.20.0.3/bin
Installed cabal-install-1.20.0.3
Updating documentation index /Users/lethe/Library/Haskell/doc/index.html
euclid:Public lethe$ which cabal
/Users/lethe/Library/Haskell/bin/cabal
euclid:Public lethe$ cabal --version
cabal-install version 1.16.0.2
using version 1.16.0 of the Cabal library 
euclid:Public lethe$ echo $PATH
/Users/lethe/Library/Haskell/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/git/bin:/usr/texbin

它声称它已将 cabal 1.20.0.3 安装到 ~/Library/Haskell,并且由于路径已更新,它声称它将执行 ~/Library/Haskell 中的版本,但它还声称执行的版本是 1.16。 0.2。这是怎么回事?

我也试过 ghc-pkg recache 和 cabal install cabal-install-1.20.0.3 (指定版本号),但执行的版本仍然是 1.16.0.2

【问题讨论】:

  • 同样的问题...有更新吗?
  • @Coffee_Table:没有更新。我放弃了。
  • @Coffee_Table:我敢肯定这对你来说太晚了,但显然我也在 GitHub 上发布了这个问题(然后马上忘记了我做过)。 github.com/haskell/cabal/issues/2003。开发人员发布了一个我认为是正确的答案。由于我不再处理此问题,因此我不对其进行测试。

标签: cabal haskell-platform cabal-install


【解决方案1】:

我曾经有一个命令的别名并忘记了它。那不是由“which”拾取的。

试试$(which cabal) --version。如果它显示 1.20 可能有一些类似的问题。使用compgen -a 列出您的别名。

/Users/lethe/Library/Haskell/ghc-7.6.3/lib/cabal-install-1.20.0.3/bin 也不是/Users/lethe/Library/Haskell/bin

还有:

现在有一个新的 Haskell-Plattform 版本 2014.2。这与 Cabal 1.18 和 GHC 7.8.3 一起提供。

它很容易更新到 Cabal 1.20(我不知道为什么它一开始就没有附带 1.20)。

我已经在使用 Haskell-Plattform、Homebrew ghc + haskell-plattform 和 http://ghcformacosx.github.io/ 之间尝试了许多不同的设置

在尝试了在 OSX 上使用 Haskell 的所有不同方式之后,最后一个对我来说最有意义。

如果您在不同的“发行版”之间切换,请确保您真的摆脱了从其他版本的 Haskell 安装的“所有内容”。

我认为最重要的是要认识到所有这些装置或多或少都是相同的。它只是移动路径和偏好。

【讨论】:

    【解决方案2】:

    有几个解决方案:

    1) 尝试更新 PATH 变量,使其首先在您的本地路径中查找。 (将此添加到您的 .bash_profile:export PATH=$HOME/Library/Haskell/bin:$PATH。获取配置文件,然后重试 whereis 命令以确定您使用的是哪个二进制文件,它应该使用您的本地二进制文件)

    虽然这对我不起作用。我不得不采取下一步措施使其发挥作用:

    2) 蛮力修复:删除 /usr/bin/cabal。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      根据23skiddoat GitHub,获取cabal安装到系统目录的方式是cabal install --global。此外,如果您的 shell 使用 hash -d cabalhash -r 执行到可执行文件 you probably need to clear the cache 的路径错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多