美文网首页
El Capitan gem 命令由于访问权限问题不能正常使用

El Capitan gem 命令由于访问权限问题不能正常使用

作者: wentianen | 来源:发表于2017-09-27 16:34 被阅读101次

    一、问题

    最近换了笔记本,原来的一些命令行工具都需要重新配置一下,发现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

    相关文章

      网友评论

          本文标题:El Capitan gem 命令由于访问权限问题不能正常使用

          本文链接:https://www.haomeiwen.com/subject/ryvuextx.html