mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/... ...

996.icu LICENSE

  • 问题背景
  • 解决方法
  • 总结

阅读之前注意:

本文阅读建议用时:15min
本文阅读结构如下表:

项目 下属项目 测试用例数量
问题背景 0
解决方法 1
总结 0

问题背景

把Mac升级到了最新版系统(macOS Catlina 10.15.3)后,似乎之前安装的cocoaPods就用不了了。于是尝试重新安装。
直接终端输入指令:sudo gem install cocoapods,结果安装错误,提示如下:
在这里插入图片描述
可以看到有3处提示:

  1. mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/include/ruby.h
    这里提示无法获取到ruby的头文件。
  2. You might have to install separate package for the ruby development
    environment, ruby-dev or ruby-devel for example.
    这里提示可能的解决方法是重新安装ruby开发环境。
  3. Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/ffi-1.12.2/gem_make.out
    这里提示错误日志已经记录在gem_make.out这个文件里,可以从finder中直接前往查看。

解决方法

根据安装错误的提示,我查看了自己Mac的环境,首先检查了自己是否有安装ruby,终端命令行输入ruby -v即可,如下图。
在这里插入图片描述
可以看出我是安装了ruby的,而且是2.6版本。
然后网上1 搜索怎么安装ruby开发环境,知道了rvm(ruby version manager),于是我输入了下一条指令:curl -L https://get.rvm.io | bash -s stable来安装rvm。哈!没想到,原来我就有安装这个rvm的!

接着输入指令:source ~/.rvm/scripts/rvm,进入RVM 环境
在这里插入图片描述
然后在rvm环境中查询已经安装的ruby,即输入指令:rvm list,这一次不得了!
在这里插入图片描述
可以看出这里提示是没有安装ruby环境!

现在可以知道,ruby(命令行ruby -v可以查询到)和rvm我都已经安装,那么问题出在哪里呢?
是的,问题就在于,rvm环境中无法查询到安装的ruby环境!至于这里应该是Apple的失误,还是rvm的失误,或者是我的失误,那就不清楚了。

这样一来,解决方法就很简单了,直接在rvm中安装ruby环境即可,由于我的ruby是2.6版本的,于是我选择安装ruby 2.6开发环境。
在这里插入图片描述
这里的安装时间非常漫长,和网络状况和CPU都有关,反正我是安装了一个下午和一个晚上(期间还会莫名其妙失去连接,又得再次安装…)😂

第二天,我终于愉快的安装上了cocoapods。
安装cocoapods还有一点注意,cocoapods是通过gem来安装的,安装前要切换一下gem的安装源,打开终端:
先输入 gem sources -r https://rubygems.org/ 移除默认安装源;
然后输入 gem sources --add https://gems.ruby-china.com/ 添加国内的安装源。(PS:可以捐助下国内维持这个源的人员,浏览器可以直接访问这个网址的)
另外可以通过 gem sources -l 指令来查看安装源。

总结

安装cocoapods,有几个前提:1. 安装ruby 2. 安装rvm 3. 在rvm环境下安装ruby开发环境 4. 记得切换gem的安装源。我个人猜测,有第3点,第一点就不需要了。
如果本文对你有帮助,不如请我一罐可乐吧 🍺
在这里插入图片描述


  1. 如何在Mac OS X上安装 Ruby运行环境

    ↩︎