El Capitan gem 命令由于訪問權(quán)限問題不能正常使用

一、問題

最近換了筆記本,原來的一些命令行工具都需要重新配置一下,發(fā)現(xiàn)gem install不好使了,即使使用sudo獲取管理員權(quán)限也不行,想起來以前升級mac os 10.11時(shí)也有同樣的問題,想起來是ruby版本的問題。

以下是一些錯(cuò)誤

  • 錯(cuò)誤1
$sudo gem update

ERROR:  While executing gem ... (Errno::EPERM) 
Operation not permitted - /usr/bin/aws-rb
  • 錯(cuò)誤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.
  • 錯(cuò)誤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(推薦)

  1. 安裝RVM
$ curl -L get.rvm.io | bash -s stable
  1. 測試安裝結(jié)果
$ rvm -v
  1. 查看當(dāng)前ruby版本
$ ruby -v

如果只使用了mac系統(tǒng)自帶的ruby,則獲取不到,會有相應(yīng)提示,你可以忽略,直接安裝最新版本的ruby即可。

  1. 列出所有可用的ruby版本
$ rvm list known
  1. 安裝最新版本的ruby(以2.4.1為例)
$ rvm install 2.4.1

2. 關(guān)閉SIP機(jī)制

  1. 重啟mac
  2. 按住command+r
  3. 選擇實(shí)用工具菜單中的命令行(terminal/終端)
  4. 輸入csrutil disable并回車
  5. 重啟mac
  6. 進(jìn)入終端執(zhí)行sudo gem update --system

更新完畢后你可以進(jìn)行相關(guān)的gem命令操作。不過此時(shí)你的電腦處于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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容