【问题标题】:Installing Haskell packages on Mac在 Mac 上安装 Haskell 包
【发布时间】:2013-03-20 12:02:46
【问题描述】:

我似乎无法在我的 Mac (10.6.8) 上安装一些 Haskell 软件包。我首先尝试了 Happstack,但失败了,然后我尝试了 Snap。

有时我在运行 ghci 时会遇到分段错误。

其他时候它的工作原理是这样的:

GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>

尝试获取 Snap 时:

....
....
....
Loading package vector-0.10.0.1 ... linking ... done.
Loading package zlib-0.5.4.0 ... linking ... done.
Loading package zlib-bindings-0.1.1.3 ... linking ... done.
Loading package zlib-enum-0.2.3 ... linking ... done.
Loading package snap-core-0.9.3.1 ... linking ... done.
Loading package snap-server-0.9.3.3 ... linking ... done.
Loading package directory-tree-0.11.0 ... linking ... done.
cabal: Error: some packages failed to install:
snap-0.11.2 failed during the building phase. The exception was:
ExitFailure 11

我已经多次看到这个问题,但没有什么能真正解决我的问题。有什么想法吗?

【问题讨论】:

  • cabal install -v2 snap 应该提供有关构建失败原因的更多信息。
  • 谢谢。我刚刚运行它并得到:pastebin.com/Wf7gASwK我仍然不确定。
  • 遗憾的是信息量不是很大。您可以尝试cabal unpack snap,然后在解压后的目录中尝试cabal configure && cabal build。但是,我没有看到“有时当我运行 ghci 时出现分段错误”。最初,这表明您的 GHC 已损坏。如果是这种情况,则可能不是包裹的错。你是如何安装 GHC 的?
  • 你试过ghc-pkg check了吗?它将检查损坏的包裹。如果它是您通过 cabal 安装的软件包,您可以使用 ghc-pkg unregister <package> 取消注册它并再次安装它应该可以修复它。如果软件包是 ghc 的一部分,您可以重新安装 ghc(应该有更好的解决方案,但我没有时间探索/找到它。)
  • 您使用的是 32 位还是 64 位 GHC?我相信我曾经在使用 64 位时看到过这个问题,而当我切换到 32 位时它就消失了。

标签: macos haskell ghci haskell-snap-framework happstack


【解决方案1】:

2021 年 5 月 22 日更新

您是否尝试过使用homebrew?它为您处理依赖项。

使用自制软件,可以使用brew命令安装ghc和cabal-install。

$ brew install ghc cabal-install
==> Downloading https://ghcr.io/v2/homebrew/core/ghc/manifests/8.10.4
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/ghc/blobs/sha256:965f94c14b56e3db7b239860e0a1d577be0b27caf8adb6212710a7430ce723d3
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:965f94c14b56e3db7b239860e0a1d577be0b27caf8adb6212710a7430ce723d3?se=2021-05-23T05%3A15%3A00Z&sig=fkH7sUY44VCLV8hI%2BtZT%2B
######################################################################## 100.0%
==> Pouring ghc--8.10.4.big_sur.bottle.tar.gz
==> /usr/local/Cellar/ghc/8.10.4/bin/ghc-pkg recache
?  /usr/local/Cellar/ghc/8.10.4: 6,907 files, 1.5GB
==> Downloading https://ghcr.io/v2/homebrew/core/cabal-install/manifests/3.4.0.0
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/cabal-install/blobs/sha256:2c0c5cc90d4739515721557f8e9c02783b3b5f106033c5c09241657b4418b21f
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:2c0c5cc90d4739515721557f8e9c02783b3b5f106033c5c09241657b4418b21f?se=2021-05-23T05%3A15%3A00Z&sig=O7ylxHgq42YVADlzTacdRfY7W
######################################################################## 100.0%
==> Pouring cabal-install--3.4.0.0.big_sur.bottle.tar.gz
?  /usr/local/Cellar/cabal-install/3.4.0.0: 7 files, 39.6MB

安装后,应该可以运行了:

$ ghc
ghc: no input files
Usage: For basic information, try the `--help' option.

除了 Haskell 解释器,ghci:

$ ghci
GHCi, version 8.10.4: https://www.haskell.org/ghc/  :? for help
Prelude>

希望这会有所帮助!

【讨论】:

  • 已经在 GHC-7.4-with-Snow-Leopard 船(以及 using-Homebrew-for-simplicity 船)中,我必须很遗憾地告诉您,这无济于事。 OS X 10.6 对于 GHC 7.4 来说太旧了。 I've shared what I learned from my experience in my answer.
  • 你现在应该改用brew install ghc cabal-install
【解决方案2】:

很遗憾,OS X 10.6 不支持 GHC 7.4; the download page 只有 10.7 的安装程序,如您所见,他们是认真的。我从痛苦的经历中知道你的问题——我在你的船上呆了很长时间,除了升级 Mac OS X(或者,大概是降级 GHC,但我真的不想这样做)。我的一位同事确实设法让 7.4.1 在 OS X 10 上运行。5,但她付出了不小的努力(她不得不使用不同版本的 GMP,即 5.0.5,并编辑 GHC 的配置脚本),我从未尝试自己复制它。

最后,您有四个选项,按照简单性大致降序排列:

  1. 使用an older Haskell Platform。这意味着降级到 GHC 7.0.x(不是 GHC 7.2.x——平台中从未有过);但是,对于哪些 GHC 版本在哪些包版本中并没有很好的记录。 Wikipedia implies 2011.2 是第一个带有 GHC 7.0.x 的版本,而 2012.2 是第一个带有 GHC 7.4.x 的版本,所以我会先尝试 2011.4.0.0。
  2. 自行安装 GHC 7.2(is supported on OS X),放弃 Haskell 平台。这可能会导致头痛,但有可能。不要忘记安装Cabal、cabal-install、平台自带的所有包等。
  3. 如果您想进行更全球化(且价格更高)的更改,请升级到 OS X 10.7 或 10.8。
  4. 尝试复制我同事的做法。 (祝你好运,但这绝对是可能的。)

【讨论】:

    【解决方案3】:

    brew install haskell-platform 不再受支持。你可能想

    错误:没有适用于 haskell 平台的公式
    我们不再打包 haskell-platform。考虑安装 ghc 和 cabal-install:
    brew install ghc cabal-install

    【讨论】:

    • brew install ghc cabal-install 正如 brew 建议的那样为我工作。注意:安装的最后一部分在我的高速宽带上花了 21 分钟。所以去泡杯茶吧。
    • 我在 30 秒内下载 (45 Mbps),在 15 秒内安装。那 21 分钟可能是在构建,而不是下载。为什么我们会有如此巨大的差异?
    【解决方案4】:

    由于 Mac 的 homebrew 上的 haskell-platform 已弃用,您可以改用 brew install ghc cabal-install。我在 Yosemite 上做了,大约花了一分钟……

    > $ brew install ghc cabal-install                                             
    ==> Downloading https://homebrew.bintray.com/bottles/ghc-7.10.1_1.yosemite.bottl
    ######################################################################## 100.0%
    ==> Pouring ghc-7.10.1_1.yosemite.bottle.tar.gz
    ?  /usr/local/Cellar/ghc/7.10.1_1: 5423 files, 821M
    ==> Downloading https://homebrew.bintray.com/bottles/cabal-install-1.22.2.0.yose
    ######################################################################## 100.0%
    ==> Pouring cabal-install-1.22.2.0.yosemite.bottle.1.tar.gz
    ==> Caveats
    Bash completion has been installed to:
      /usr/local/etc/bash_completion.d
    ==> Summary
    ?  /usr/local/Cellar/cabal-install/1.22.2.0: 6 files, 19M
    

    【讨论】:

      【解决方案5】:

      这是一个老问题,但考虑到它在 Google 搜索中的排名很高。我就是这样过来的。

      $ brew update
      $ brew install haskell-stack
      $ stack --version
      $ stack --help # "man stack" gives something completely different
      $ stack setup # Install GHC
      $ stack ghci
      

      来源:http://seanhess.github.io/2015/08/04/practical-haskell-getting-started.html

      Why stack and not cabal?

      编辑:

      我发现每次想使用“ghci”时都必须写“stack ghci”很烦人。一个解决方案是简单地将这些行添加到 ~/.bash_aliases 文件中:

      alias sghc='stack ghc'
      alias sghci='stack ghci'
      alias srunhaskell='stack runhaskell'
      

      然后获取要应用的文件:

      $ source ~/.bash_aliases
      

      然后我可以运行 ghci 和/或 haskell 运行这些命令,它将使用堆栈版本:

      $ sghc [filename]
      $ sghci
      $ srunhaskell
      

      【讨论】:

        【解决方案6】:

        更新:2016 年 2 月:虽然其他答案很有帮助,但我没有找到完整的最新答案。

        安装很简单:

        $ brew install ghc cabal-install
        

        我需要执行安装后的一个额外步骤是:

        $ cabal update
        

        接着是:

        $ cabal install ghc-mod
        

        详情请见here。

        或者,不要使用自制软件进行安装,而是访问Haskell Platform 获取安装程序磁盘映像 - 请注意,Haskell 平台仅与 OS X 10.6 及更高版本兼容。

        虽然,作为一般规则,我总是使用自制软件来管理我的依赖项,但对于 Haskell,我的建议(除非你真的知道自己在做什么)只是安装这个二进制文件。这避免了进一步的任何意外。本地安装后的优秀文档位于:file:///Library/Haskell/doc/start.html

        不再支持这个问题的流行答案(使用 brew 安装 haskell-platform)。

        【讨论】:

          【解决方案7】:

          2017 年末的回答。我正在运行 macOS Sierra -- 10.12.6 (16G29)。这在我的 MacBook Air 上的安装时间不到五分钟就成功了:

          brew cask install haskell-platform

          然后ghc --version报告:

          Glorious Glasgow Haskell 编译系统,版本 8.2.1

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-04-14
            • 2022-10-07
            • 1970-01-01
            • 1970-01-01
            • 2014-09-11
            • 1970-01-01
            • 2020-07-07
            相关资源
            最近更新 更多