最近升级了macOS High Sierra(10.13),升级时间挺长,不过倒是没有出现网上说的各种问题,软件啥的都正常使用。
不过,fastlane和cocoapods却不能用了:
fastlane 和 pod 均报同样的错:
$ fastlane beta
zsh: /usr/local/bin/fastlane: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin: no such file or directory
$ pod
zsh: /usr/local/bin/pod: bad interpreter: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin: no such file or directory
通过 cat `which pod`
命令可以查看pod命令的代码
$ cat `which pod`
#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'cocoapods' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require 'rubygems'
version = ">= 0.a"
if ARGV.first
str = ARGV.first
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
if str =~ /\A_(.*)_\z/ and Gem::Version.correct?($1) then
version = $1
ARGV.shift
end
end
load Gem.activate_bin_path('cocoapods', 'pod', version)
原来是因为macOS升级10.13之后升级了ruby版本,从原来的2.0
升级到了2.3
,结果这些通过ruby
的解释的程序都找不到ruby解释器了
那顺着这条线索,我先升级一下fastlane
和pod
是不是就好了呢🤔️?
- 我的
fastlane
和cocoapods
都是通过gem
安装的 - 而
gem
呢又是通过brew
安装的
所以,想通过gem
升级一下fastlane
和pod
$ sudo gem install fastlane
结果却报错了🤔️:
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
google了一下,说先升级一下gem
:
$ sudo gem update --system
Updating rubygems-update
ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
结果依然是报同样的错误
猜想难道是brew
的问题🤔️?于是升级了brew
:
$ brew update
结果brew
升级完了再升级gem
也还是同样的错误。
又google了一下,结果搜到了官方的issue,里面有人回复称这样操作:
# 先删除 update_rubygems
$ rm /usr/local/bin/update_rubygems
# 然后再更新 gem到2.6.2版本
$ gem update -N --system 2.6.2
删除update_rubygems
之后再更新gem
就不会报刚才的错误了。
然后再重新安装 fastlane
和pod
$ sudo gem install fastlane
$ sudo gem install cocoapods
🎉然后就又能愉快的使用了✌️