【问题标题】:Errors when installing cocoapods with gem使用 gem 安装 cocoapods 时出错
【发布时间】:2020-06-14 07:44:45
【问题描述】:

我正在使用 macOS Mojave,当我尝试使用 gem 安装 cocoapods 时出现以下错误。

构建原生扩展。这可能需要一段时间... 错误:错误 安装 cocoapods:错误:无法构建 gem 原生扩展。

current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20200302-707-1iveybq.rb extconf.rb mkmf.rb 找不到标头 ruby 文件在 /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf 失败,退出代码 1

Gem 文件将继续安装在 /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2 供检查。结果 登录到 /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out

当我运行以下命令时出现此错误。

sudo gem install cocoapods

sudo gem install -n /usr/local/bin cocoapods

我已经安装了 xcode 命令行工具,当我运行 xcode-select --install 时收到以下消息

xcode-select: error: 命令行工具已经安装,使用 “软件更新”安装更新

我也同意使用命令sudo xcodebuild -license的xcode许可协议

/Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out 中的错误日志给出以下内容

当前目录:/Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteco$ mkmf.rb 找不到 ruby​​ 的头文件 /System/Library/Frameworks/Ruby.fra$

extconf 失败,退出代码 1

我该怎么做才能解决这个问题?

【问题讨论】:

  • 你安装了 ruby​​ 吗?从命令行尝试ruby --version
  • 嗨,是的,我明白了。 ruby 2.3.7p456(2018-03-28 修订版 63024)[universal.x86_64-darwin18]
  • 日志文件的内容是什么? /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out
  • 我包含了错误日志
  • 我建议你看看这个HERE

标签: ios xcode macos rubygems


【解决方案1】:

这个问题的答案可以在这里找到here,尽管它与这个问题无关。以下是最佳答案的 sn-p。

对于 ma​​cOS 10.14 上的 Xcode 11,即使在安装 Xcode 和安装命令行工具并接受许可之后,也可能发生这种情况

sudo xcode-select --install
sudo xcodebuild -license accept

问题在于 Xcode 11 附带了 macOS 10.15 SDK,其中包含 ruby​​2.6 的标头,但不包含 macOS 10.14 的 ruby​​2.3 的标头。您可以通过运行验证这是您的问题

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

在带有 Xcode 11 的 macOS 10.14 上打印 non-existent 路径

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

但是,Xcode 11 在/Library/Developer/CommandLineTools/SDKs/MacOS10.14.sdk 中安装了一个 macOS 10.14 SDK。没有必要按照其他答案中的建议通过安装旧的头文件来污染系统目录。相反,通过选择该 SDK,将找到相应的 ruby​​2.3 标头:

sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

现在应该可以正确打印了

/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0

同样,gem install 在选择该 SDK 时应该可以工作。

要切换回使用当前的 Xcode 11 SDK,请使用

sudo xcode-select --switch /Applications/Xcode.app

【讨论】:

  • 非常感谢,经过 10 个小时的搜索,我刚刚找到了您的解决方案,它真的很有帮助
  • @MoumenAlisawe 谢谢。乐于助人:)
  • 在我的 10.14 路径没有从 11.1 更改为 10.15。我在 SDK 文件夹中有 MacOSX10.14.sdk 和 MacOSX11.1.sdk。将 MacOSX11.1.sdk 名称更改为 MacOSX11.1.sdk.backup 使其未使用并运行 Xcode 选择成功更改了路径。我不知道更改名称或删除该文件夹的任何结果,但它在短期内解决了我的问题。
  • 在 MacOS 10.15.7 和 Xcode 11.7 上也工作过,我只需要运行 sudo xcode-select --switch /Applications/Xcode.app,因为 ruby -rrbconfig 正在打印正确的路径
  • 这个,结合 xcrun,它对我有用。 config.h 文件位于 universal-darwin20/ruby/ 中,而不是该 ruby​​hdrdir 中的 ruby/
【解决方案2】:
sudo xcode-select --switch /Library/Developer/CommandLineTools

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'

【讨论】:

  • 实际上,接受的答案是在此帖子 后 4 天编辑的。发布此答案时,接受的答案仅包含一个链接,并且此答案是唯一的。
【解决方案3】:

对我来说,使用命令 sudo gem install cocoapods -v 1.8.4 而不是 sudo gem install cocoapods

参考:https://github.com/CocoaPods/CocoaPods/issues/9568#issuecomment-599235420

【讨论】:

  • 我在 catalina 10.15.5 和 xcode 11.5 上。上面缺少的标头业务对我来说不是问题 - 但安装 -v 1.8.4 确实有效,所以谢谢。
【解决方案4】:
  1. 运行
    ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
    
    找出你的 ruby​​ 配置。
  2. 如果输出是不存在的 MacOSX10.15 路径。 喜欢
    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
    
    那么您应该通过执行下一步来更正配置。
  3. 运行
    sudo xcode-select --switch /Library/Developer/CommandLineTools
    
  4. 您可以运行
    ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
    
    再次查看路径是否已更改。
  5. 输出应该类似于
    /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
    

现在你可以运行gem install 来安装cocoapods了!

【讨论】:

  • 这个线程中唯一的宝石就是你的答案!谢谢,Big Sur 对我有用
  • 也在大苏尔。感谢您一步一步的澄清!
【解决方案5】:

这对我很有帮助/对我有用:

# brew cleanup -d -v    
# brew install cocoapods

P.S.:您应该安装 Homebrew。您可以使用以下命令安装 brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

祝你好运:)

【讨论】:

    【解决方案6】:

    在 mac os big sur 上试试这个

    sudo gem install cocoapods -v 1.8.4
    

    【讨论】:

    【解决方案7】:

    我花了一天的时间寻找解决方案, 我正在使用 MacOS Big Sur Beta 8。 用 gem 升级 cocoapods, 试试这个:

    1. 安装 rbenv
    • git clone https://github.com/rbenv/rbenv.git ~/.rbenv

    • cd ~/.rbenv && src/configure && make -C src

    • 将 ~/.rbenv/bin 添加到您的 $PATH 以访问 rbenv 命令行实用程序。 见:https://github.com/rbenv/rbenv#basic-github-checkout

    • 确保 export PATH="$HOME/.rbenv/shims:${PATH}" 已添加到您的 $PATH

    1. xcode-select --switch /Applications/Xcode.app/Contents/Develope

    2. gem install cocoapods 应该像魅力一样工作!

    【讨论】:

    • 这是唯一有效的方法。谢谢 ukiyoevega。
    【解决方案8】:

    您应该为 Xcode 安装最新版本的 CommandLineTools 来解决此问题。

    【讨论】:

      【解决方案9】:

      试试

      1. 通过终端安装自制软件。

      2. homebrew安装成功后,在终端输入

        $ brew install cocoapods

      【讨论】:

        猜你喜欢
        • 2020-07-15
        • 2013-11-13
        • 2016-01-07
        • 2014-06-20
        • 2021-01-26
        • 2020-12-09
        • 1970-01-01
        相关资源
        最近更新 更多