Mac High Sierra执行gem update --system遇Operation not permitted权限错误
解决Mac High Sierra下执行
sudo gem update --system的权限问题 你碰到的这个Errno::EPERM权限错误太常见了——Mac High Sierra里的系统自带Ruby目录受**系统完整性保护(SIP)**管控,哪怕用sudo也没法修改/System/Library路径下的文件,这是苹果为了防止恶意篡改系统核心组件做的安全限制,直接更新系统Ruby的gem自然会失败。
给你两个靠谱的解决方案,推荐第一种,长期使用更省心:
方案一:用rbenv安装独立Ruby环境(推荐)
这个方法会给你搭建一个完全独立的Ruby环境,和系统自带的互不干扰,以后更新、切换Ruby版本都很灵活:
- 如果你还没装Homebrew,先执行这个命令安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装rbenv:
brew install rbenv - 把rbenv加入shell初始化:执行
rbenv init,按照终端提示把对应的代码片段添加到你的shell配置文件(比如~/.bash_profile或~/.zshrc,取决于你用的shell) - 重启终端,或者执行
source ~/.bash_profile(对应你的配置文件)让改动生效 - 查看可安装的Ruby稳定版本:
rbenv install -l - 选一个最新的稳定版安装(比如3.2.2,按需选择):
rbenv install 3.2.2 - 设置这个版本为全局默认:
rbenv global 3.2.2 - 验证结果:执行
ruby -v,显示你刚安装的版本就成功了 - 现在再执行
gem update --system就不会有权限问题,之后安装Sass直接跑gem install sass就行
方案二:用gem的用户目录安装(临时快速解决)
如果不想折腾独立环境,也可以把gem更新到你的用户目录下,避开系统权限限制:
- 执行更新命令时加上
--user-install参数:gem update --system --user-install - 接下来需要把用户gem的可执行文件目录加到系统PATH里,打开你的shell配置文件(比如
~/.bash_profile),添加一行:export PATH="$HOME/.gem/ruby/2.3.0/bin:$PATH"(注意这里的2.3.0要和你系统Ruby的版本对应,就是报错里的2.3版本) - 保存后执行
source ~/.bash_profile让PATH生效,之后就能正常使用更新后的gem,安装Sass也没问题
⚠️ 特别提醒:别想着去关闭SIP来修改系统Ruby,不仅会降低系统安全性,而且每次系统更新后你的修改大概率会被重置,完全没必要。
内容的提问来源于stack exchange,提问作者xylar
相关产品推荐
相关产品推荐

