一、問題
最近換了筆記本袄简,原來的一些命令行工具都需要重新配置一下钩骇,發(fā)現(xiàn)gem install
不好使了,即使使用sudo
獲取管理員權(quán)限也不行郑象,想起來以前升級mac os 10.11時也有同樣的問題贡这,想起來是ruby
版本的問題。
以下是一些錯誤
- 錯誤1
$sudo gem update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/aws-rb
- 錯誤2
$sudo gem install cocoapods
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/pod
$gem install cocoapods
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
- 錯誤3
$sudo gem install shenzhen
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/ipa
二厂榛、為什么
Apple在OS X El Capitan中全面啟用了名為System Integrity Protection (SIP)的系統(tǒng)完整性保護(hù)技術(shù)盖矫。受此影響,大部分系統(tǒng)文件即使在root用戶下也無法直接進(jìn)行修改击奶。
三炼彪、解決方案
1. 升級ruby(推薦)
- 安裝
RVM
$ curl -L get.rvm.io | bash -s stable
- 測試安裝結(jié)果
$ rvm -v
- 查看當(dāng)前
ruby
版本
$ ruby -v
如果只使用了mac系統(tǒng)自帶的ruby
,則獲取不到正歼,會有相應(yīng)提示辐马,你可以忽略,直接安裝最新版本的ruby
即可局义。
- 列出所有可用的
ruby
版本
$ rvm list known
- 安裝最新版本的
ruby
(以2.4.1為例)
$ rvm install 2.4.1
2. 關(guān)閉SIP機(jī)制
- 重啟mac
- 按住command+r
- 選擇實用工具菜單中的命令行(terminal/終端)
- 輸入csrutil disable并回車
- 重啟mac
- 進(jìn)入終端執(zhí)行sudo gem update --system
更新完畢后你可以進(jìn)行相關(guān)的gem命令操作喜爷。不過此時你的電腦處于SIP的關(guān)閉狀態(tài),對于系統(tǒng)來說可能是不安全的萄唇,所以這種操作需要謹(jǐn)慎檩帐。
你也可以按照上述步驟,使用csrutil enable指令重新打開你的SIP另萤。
相關(guān)指令:
-
查看SIP開關(guān)狀態(tài)
$csrutil status
-
打開SIP開關(guān)
$csrutil enable
-
關(guān)閉SIP開關(guān)
$csrutil disable
-
清除SIP標(biāo)志位(等同于SIP完全開啟)
$csrutil clear
3.自定義GEM_HOME
在終端輸入以下指令:
$ mkdir -p $HOME/Software/ruby
$ export GEM_HOME=$HOME/Software/ruby
$ gem install cocoapods
$ export PATH=$PATH:$HOME/Sofware/ruby/bin
4.將/usr/bin下的鏈接轉(zhuǎn)到/usr/local/bin
你只需要在終端執(zhí)行以下一條指令
$sudo gem install cocoapods -n /usr/local/bin
參考
1.http://stackoverflow.com/questions/31972968/cant-install-gems-on-macos-x-el-capitan
2.http://bbs.pcbeta.com/viewthread-1605186-1-1.html