使用 gem 安装 cocoapods 时出错

Mul*_*yan 31 macos xcode rubygems ios

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

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

current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c
Run Code Online (Sandbox Code Playgroud)

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20200302-707-1iveybq.rb extconf.rb mkmf.rb 在 /System/Library 找不到 ruby​​ 的头文件/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
Run Code Online (Sandbox Code Playgroud)

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

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

我也同意 xcode 许可协议与命令 sudo xcodebuild -license

错误登录/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 在 /System/Library/Frameworks/Ruby.fra$ 找不到 ruby​​ 的头文件

extconf 失败,退出代码 1

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

小智 62

可以在此处找到此问题的答案,尽管它与此问题无关。以下是最有效的答案片段。

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

sudo xcode-select --install
sudo xcodebuild -license accept
Run Code Online (Sandbox Code Playgroud)

问题是 Xcode 11 提供了 macOS 10.15 SDK,其中包括 ruby​​2.6 的头文件,但不包括 macOS 10.14 的 ruby​​2.3。您可以通过运行来验证这是您的问题

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
Run Code Online (Sandbox Code Playgroud)

在 macOS 10.14 和 Xcode 11 上打印不存在的路径

/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
Run Code Online (Sandbox Code Playgroud)

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

sudo xcode-select --switch /Library/Developer/CommandLineTools
ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
Run Code Online (Sandbox Code Playgroud)

这现在应该正确打印

/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
Run Code Online (Sandbox Code Playgroud)

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

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

sudo xcode-select --switch /Applications/Xcode.app
Run Code Online (Sandbox Code Playgroud)


小智 14

sudo xcode-select --switch /Library/Developer/CommandLineTools

ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
Run Code Online (Sandbox Code Playgroud)


kb9*_*920 12

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

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


小智 9

  1. ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
    
    Run Code Online (Sandbox Code Playgroud) 找出你的红宝石配置。
  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
    
    Run Code Online (Sandbox Code Playgroud) 那么您应该通过执行下一步来更正配置。
  3. sudo xcode-select --switch /Library/Developer/CommandLineTools
    
    Run Code Online (Sandbox Code Playgroud)
  4. 你可以跑
    ruby -rrbconfig -e 'puts RbConfig::CONFIG["rubyhdrdir"]'
    
    Run Code Online (Sandbox Code Playgroud) 再次查看路径是否已更改。
  5. 输出应该是这样的
    /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0
    
    Run Code Online (Sandbox Code Playgroud)

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


mAc*_*mAc 7

这对我很有帮助/很有魅力:

# brew cleanup -d -v    
# brew install cocoapods
Run Code Online (Sandbox Code Playgroud)

PS:你应该安装了 Homebrew。您可以使用以下命令安装 brew:

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

祝你好运 :)


小智 5

在 mac os big sur 上试试这个

sudo gem install cocoapods -v 1.8.4
Run Code Online (Sandbox Code Playgroud)