你没有对 /Library/Ruby/Gems/2.3.0 目录的写入权限。

21
当我在MacOS 10.13.x中使用命令gem install bundler时,会出现以下错误:

您没有/Library/Ruby/Gems/2.3.0目录的写入权限。

$ gem install bundler
Fetching: bundler-1.16.2.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

4
这个问题的答案符合您的要求吗?“您没有对/Library/Ruby/Gems/2.3.0目录拥有写权限”(Mac用户)。 - monfresh
4个回答

41

这基本上是一个重复的问题,与这个问题是一样的,在那里我已经发布了一个详细的答案,可以解决这个问题。为了避免维护两个独立的答案,我认为最好只需在这里链接到我的答案,因为相同的解决方案适用: https://dev59.com/llUK5IYBdhLWcg3w4jQv#54873916


2
感谢您提供详细的答案。对于我来说,使用zsh,安装Ruby建议使用命令echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc。之后,我运行了source ~/.zshrc - absynce
我希望我能代表提问者接受这个答案。整整一天的时间都花在了诊断“mkmf.rb无法在/usr/lib/ruby/include/ruby.h找到头文件”、“Permission denied @ dir_s_mkdir - /Library/Ruby/Gems”、获取/System/Library文件夹的所有权、将ruby重置为空状态、使用时间机器进行恢复,最终彻底从我的Mac中清除ruby,并且我终于找到了一个解决方案。 - Jason

23

如前所述,在Mac上,系统ruby是由root拥有的,使用sudo安装东西不安全。如果这样做,每个gem都将以root身份运行,这是一个安全噩梦。不要这样做

我会为您介绍我的步骤,因为以前的答案假定了一些命令行foo,并且增加了一些细节可能对某些人有用。

仔细检查我们是否正在运行旧的、系统提供的ruby。

which ruby
/usr/bin/ruby
< p >(那是系统路径)< /p >
ruby -v
ruby 2.3.7

(旧版本)

brew install ruby

或者先安装brew

安装完成后,显示:

/usr/local/Cellar/ruby/2.6.3

让它首先出现在路径中first

PATH=/usr/local/Cellar/ruby/2.6.3/bin:$PATH

仔细检查

which ruby
/usr/local/Cellar/ruby/2.6.3/bin/ruby

请再次确认版本

ruby --version
ruby 2.6.3p62
使路径更新永久化(否则每次想使用ruby时都必须更新路径)。
echo  PATH=/usr/local/Cellar/ruby/2.6.3/bin:$PATH >> ~/.bash_profile

7
sudo gem install -n /usr/local/bin bundler

这是一种不好的做法,不建议使用。在此处阅读更多信息。 - Boris Y.

1
最好不要一直使用sudo。 正确的方法是,在通过brew安装了最新的ruby后,对我来说source ~/.zshrc很有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接