最近升级了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
🎉然后就又能愉快的使用了✌️