El Capitan gem 命令由於訪問權限問題不能正常使用 一、問題 二、爲什麼 三、解決方案 參考

一、問題

最近換了筆記本,原來的一些命令行工具都需要重新配置一下,發現gem install不好使了,即使使用sudo獲取管理員權限也不行,想起來以前升級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)的系統完整性保護技術。受此影響,大部分系統文件即使在root用戶下也無法直接進行修改。

三、解決方案

1. 升級ruby(推薦)

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

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

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

2. 關閉SIP機制

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

更新完畢後你可以進行相關的gem命令操作。不過此時你的電腦處於SIP的關閉狀態,對於系統來說可能是不安全的,所以這種操作需要謹慎。
你也可以按照上述步驟,使用csrutil enable指令重新打開你的SIP。

相關指令:

  • 查看SIP開關狀態

     $csrutil status
    
  • 打開SIP開關

     $csrutil enable
    
  • 關閉SIP開關

     $csrutil disable
    
  • 清除SIP標誌位(等同於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下的鏈接轉到/usr/local/bin

你只需要在終端執行以下一條指令

$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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章