如果由于权限错误而失败,如何安装 gem 或更新 RubyGems

Posted

技术标签:

【中文标题】如果由于权限错误而失败,如何安装 gem 或更新 RubyGems【英文标题】:How to install a gem or update RubyGems if it fails with a permissions error 【发布时间】:2013-01-14 10:58:12 【问题描述】:

我正在尝试使用 gem install mygem 安装 gem 或使用 gem update --system 更新 RubyGems,但失败并出现以下错误:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

有人知道如何解决这个问题吗?

【问题讨论】:

这是我的解决方案:***.com/questions/34071868/… 我的错误发生是因为我正在做:gem update cocoapods 正确:sudo gem update cocoapods sudo chown -R $USER /Library/Ruby/Gems/ 简单地使用这个命令对我有用:sudo gem install mygem @vaskort 这应该是接受的答案! 【参考方案1】:

尝试添加--user-install,而不是使用sudo

gem install mygem --user-install

【讨论】:

我不知道为什么之前没有发布您的答案。 --user-install 选项显然有 been around for a while. 我只是希望你早点写这个。 =) 这个需要顶一下!使用 sudo 或 su 安装是一个坏主意,因为您在模块上强制执行权限系统,并且可能全局安装的包可能会与其他安装的包或其他项目的依赖项发生冲突。使用 rbenv 需要您安装另一个软件并增加了一层复杂性。 这有效,但警告:“警告:您的路径中没有 /Users//.gem/ruby/2.0.0/bin,gem 可执行文件将无法运行。”以下链接提供了有关如何更新路径的有用说明(无需使用 vi)hathaway.cc/post/69201163472/… 这很简单,也合乎逻辑。如果你的 bashrc 中没有,请添加 ruby​​ 路径 if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi 来源:guides.rubygems.org/faqs/#user-install 这会与 Apple 的(安装了 ruby​​ 的)系统搞砸吗?【参考方案2】:

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

就是那个意思,你没有权限在那里写。

这是Apple安装的Ruby版本,供他们自己使用。虽然如果您知道自己在做什么,可以对其进行微小的修改,因为您不确定权限问题,但我想说继续沿着这条轨道前进并不是一个好主意。

相反,我强烈建议您考虑使用rbenv 或RVM 来管理单独的Ruby,安装到您主目录的沙箱中,您可以修改/折叠/主轴/更改而无需担心搞砸系统 Ruby。

在这两者之间,我使用的是 rbenv,尽管我过去经常使用 RVM。 rbenv 采用更“不干涉”的方法来管理您的 Ruby 安装。 RVM 有很多功能并且非常强大,但是因此更具侵入性。无论哪种情况,在开始安装您选择的任何一种之前,阅读几次安装文档。

【讨论】:

您不需要使用单独的 Ruby 库。就像迈克尔上面建议的那样,只需将“sudo”放在你的前面。 更改 Apple 安装 Ruby 的所有权并不是一个好主意,因为系统会安装/升级,磁盘工具可以自动恢复/修复目录的所有权和权限。这将使用户感到沮丧,并可能使期望拥有这些目录的写入权限/所有权的操作系统和代码感到沮丧。 Apple 安装使用其 Ruby 的应用程序,并可能预期某个版本或行为,因此这些应用程序可能会中断。既然使用 RVM 或 rbenv 更容易、更安全而且不用担心,为什么还要费心呢。 对于像我这样实际上不做任何 ruby​​ 开发并且不想花半个小时搞清楚这些水晶东西是什么的人。 brew install ruby 将以一种不会破坏苹果安装的干净方式解决您的依赖问题。如果您已经 sudo'd 对初始安装进行了更新并且担心您所做的事情,您应该可以通过以下方式撤消它:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current; "I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" 这只是增加了人们不应该使用sudochown 的重要性。叹息.... 已解决:在 El Captain 上完成 brew install ruby 后,只需关闭终端并重新打开即可。【参考方案3】:

您确实应该使用 Ruby 版本管理器。

在执行gem update 命令时,正确使用一个可以防止并解决您的权限问题。

我推荐 rbenv

但是,即使您使用 Ruby 版本管理器,您仍然可能会收到同样的错误消息。

如果您这样做了,并且您使用的是 rbenv,只需验证 ~/.rbenv/shims 目录是否位于系统 Ruby 的路径之前。

$ echo $PATH 会告诉你加载路径的顺序。

如果您发现您的 shims 目录位于系统 Ruby bin 目录之后,则编辑您的 ~/.bashrc 文件并将其作为最后一个导出 PATH 命令:export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v 显示您正在使用的 Ruby 版本

这说明我目前使用的是系统版的Ruby(一般不好)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 将我切换到更新的预安装版本(请参阅下面的参考资料)。

这表明我使用的是较新版本的 Ruby(这可能不会导致 Gem::FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

您通常不需要在 gem 命令前加上 sudo。如果您觉得有必要这样做,则可能是配置错误。

有关 rbenv 的详细信息,请参阅以下内容:

https://github.com/sstephenson/rbenv http://robots.thoughtbot.com/post/47273164981/using-rbenv-to-manage-rubies-and-gems

【讨论】:

如果你使用rbenv,你不应该自己弄乱通行证,如果你关注Homebrew installation instructions,你所要做的就是将eval "$(rbenv init -)"添加到你的shell配置,rbenv 应该负责为您设置 PATH 谢谢。我忘记了“rbenv global”,所以我仍在使用系统 ruby​​,并且 gem install 失败了。【参考方案4】:

你为什么不这样做:

sudo gem update --system

【讨论】:

以 root 身份安装 gems 不是一个好主意。 ***.com/questions/2119064/… 遇到了brew upgrade Error: Permission denied... 的问题。这解决了它。谢谢! 永远不要使用 SUDO,如果你必须这样做,你在设置中做错了什么。请使用 rbenv 或 rvm。 为什么每个人回答权限问题时总是在命令前抛出 sudo?这个最佳实践如何? hyh:qzc.xcodeproj ylgwhyh$ gem install cocoapods ERROR: While execution gem ... (Gem::FilePermissionError) 您没有 /Library/Ruby/Gems/2.0 的写入权限。 0 目录。【参考方案5】:

这将以干净的方式解决 MacOS Mojave 和 Catalina 上的问题:

brew install ruby

然后将GEM_HOME 设置为您的用户目录。在终端上:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

或者如果在Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

【讨论】:

你是怎么发现这个的?成功了! 你就是那个男人!高五,它真的像一个魅力。非常感谢。 这对我不起作用,直到我运行 xcode-select --install。这是编译扩展所必需的。 我运行了这个,我希望能够重置这些所做的更改,你知道如何恢复它吗? @Fmessina 请注意,执行此操作后,您应该按照许多安装指南的指示使用“gem install ...”而不是“sudo gem install ...”【参考方案6】:

对我来说,问题是由于使用 rbenv 而忘记全局设置正确的版本。

所以我不得不用rbenv global xxx来设置它

就我而言,我安装了2.0.0-p247,所以我必须发出命令:

rbenv global 2.0.0-p247
rbenv rehash

然后一切正常。

【讨论】:

对于那些已经在使用 rbenv 并在将 OSX 升级到较新版本后安装 gems 时开始收到权限错误的人:您应该首先设置 rbenv 版本rbenv global 2.1.1,然后跟着@ 987654327@。现在重新运行您的 gem install 命令。 ^This + 重启终端。 未来的探索者:rbenv rehash 已被弃用 github.com/rbenv/rbenv-gem-rehash 完美地为我工作!这是我失踪的rbenv rehash 值得注意的是,如果没有设置全局 ruby​​,则缺少权限的是系统 ruby​​,而 rbenv 将使用系统 ruby​​。这将通过rbenv versions 进行验证。【参考方案7】:

你需要更正你的路径。

要确定此修复是否有效,请运行以下命令:

which gem

这应该输出一个你没有权限的目录:

/usr/bin/gem

要解决此问题,请执行以下步骤:

    确定您需要复制到个人资料的路径:

    rbenv init -
    

    输出的第一行是您需要复制到您的个人资料的行:

    export PATH="/Users/justin/.rbenv/shims:$PATH" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() 
        typeset command
        command="$1"
        if [ "$#" -gt 0 ]; then
            shift
        fi
    
        case "$command" in
            rehash|shell)
                eval `rbenv "sh-$command" "$@"`;;
            *)
                command rbenv "$command" "$@";;
        esac
    
    

    复制您个人资料的路径并保存。

    重新加载您的个人资料(我是source ~/.zshenv)。

    运行rbenv rehash

现在,当您运行 which gem 时,您应该获得一个您有权访问的本地路径:

/Users/justin/.rbenv/shims/gem

【讨论】:

这就是我遇到的问题。您应该能够在您的~/.bash_profile 中包含eval "$(rbenv init -)" 以进行所有必要的更改。 最佳答案。我的配置文件名为 .bash_profile,您可以像这样打开文件: touch ~/.bash_profile;打开 ~/.bash_profile 并添加您在第 1 点提到的行。【参考方案8】:

这对我有用。另外,如果您之前以 root 身份安装了 gems,它会通过将所有权更改回您来解决该问题(更好的安全性)。

sudo chown -R `whoami` /Library/Ruby/Gems

【讨论】:

Big NO!永远不要更改/Library文件夹的权限,系统可能会在以后的更新中中断。 (抱歉回复晚了) @Raptor 我正在修改子文件夹的权限,而不是“/Library”。就我而言,我错误地将 gem 安装为 root,所以我想撤消它。理论上没有我能想到的负面后果,也没有我观察到的任何负面后果。我很好奇 - 为什么你认为这是个坏主意? 系统路径。 macOS 的进一步更新可能会中断。 gem 默认安装到这个位置。它无法使用,因为它被错误地安装为 root (sudo) 而不是我的普通用户。我所做的结果与我最初安装为 $USER 的结果相同。我看不出有什么害处。这里的大多数其他答案都提出了相同的结果/解决方案,但实现它的方法不同。我仍然没有看到问题。你是说 gems 不应该安装在 /Library 下吗?【参考方案9】:
sudo gem update --system
sudo gem install (gemfile)

【讨论】:

在 macOS Mojave 中,sudo 没有权限。哈哈【参考方案10】:

有两种方法:使用 rbenv 或 RVM。下面有两种食谱。在此之前,您可能需要关闭 gems 本地文档的安装。

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

然后:

install rbenv

install ruby-build

运行:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

这会在您的本地目录中安装最新版本的 gem 系统。这意味着您不会干扰系统配置。如果你问这个问题,你不应该搞乱系统安全,你会花更长的时间来了解你可能会遇到什么问题,而不仅仅是有一个简单的方法来避免你开始遇到的问题。当您对操作系统和编程有了更多了解后,再学习 InfoSec。

替代使用“RVM”:到install rvm 运行:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

这具有相同的结果,您最终会得到一个不会干扰系统版本的本地 Ruby 和 Gem 系统。不需要 Homebrew,也不需要覆盖系统库等。

【讨论】:

【参考方案11】:

我找到this how-to for sudoless gem:

    brew install rbenv ruby-build sudo gem update --system

    将导出添加到.bashrc

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
    

    最后将此添加到您的~/.gemrc

    gem: -n/usr/local/bin
    

    gem update --system

【讨论】:

我用了brew install rebenv ruby-build,然后我的目录后面有system?知道是什么原因造成的,以及如何摆脱system【参考方案12】:

在下面使用我的原始答案之前尝试nathanwhy's answer。他对--user-install 的推荐应该可以达到同样的目的,而不必与您的.bash_profile 混淆或确定您的ruby 版本。


如果您不关心特定的 ruby​​ 版本,可以跳过heavy-lift ruby environment manager options,只需将这些行添加到~/.bash_profile

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

路径是从gem env的原始输出中窃取的:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

不需要sudoing,您可以使用 Apple 提供的已安装的 ruby​​。

【讨论】:

+1:这对我很有用。不是每个人都是他们正在使用的机器的系统管理员,因此不是每个人都可以访问“sudo”、“chown”或类似工具。类似地,人们应该注意“gem install --user-install”,它将 gem 安装到用户主目录中的目录,而不是所有用户共享的目录。【参考方案13】:

我需要创建一个rbenv rehash,以便它指向我当地的 Gem 图书馆。

您的 gem 管理器似乎指向了系统库,因此,与其弄乱权限,不如为您的管理器执行相当于“重新散列”的操作,以使事物指向本地。

【讨论】:

未来的探索者:rbenv rehash 已被弃用 github.com/rbenv/rbenv-gem-rehash【参考方案14】:

我已格式化我的 Mac,但许多建议的解决方案对我不起作用。 对我有用的是这些命令按正确的顺序:

    安装自制软件:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    安装 Ruby:

    brew install ruby
    

    安装指南针:

    sudo gem install compass
    

【讨论】:

你永远不需要使用 sudo 来安装 gem。使用sudo 会将其安装到系统拥有的Ruby 中,而不是安装到您拥有的Ruby 中。使用沙盒 Ruby 在编程时更易于管理和使用,因为您可以创建多个不同的实例并尝试不同的事情,然后在完成后销毁它们。【参考方案15】:

更老更聪明

不要照我说的做,只要知道在使用sudo 时要小心。您可能想使用 rbenv 之类的东西来隔离您正在做的任何工作。


一种方式

learn about chown

我不知道你是否喜欢命令行,但这将使使用任何将软件包安装到系统的工具处理任何项目变得轻而易举。

chown 据我所知,代表更改所有权。

我来寻找这个答案的原因是因为gem install今天向我抛出了这个错误:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

这是使用chown 的绝佳机会。您会看到 Ruby 为我们提供了它需要访问的目录,而且它似乎是一个经常使用的目录。

在这种情况下,解决问题只需要知道三件事,但chown 的功能要强大得多,并且比我现在要演示的更灵活。请参阅底部的来源以获取更多信息。

两件事

    用户名 目录

如果您在 shell 中查找用户名很容易。只看提示。我的看起来像:

breadly@breadly-desktop:~\Desktop

当前用户只是@ 之前的名称。我们从错误消息中知道目录,但您有两个选择。您可以使用../gems/1.9.1 将您的权限限制为当前版本,也可以使用../gems 授予自己对所有版本的gem 的写入权限。

实际更改所有权的命令如下所示。

chown -R $(whoami) /absolute/path/to/directory

-R 被称为标志,-R 标志通常告诉命令以递归方式执行某些操作,或者换句话说,对目录中包含的所有内容以及目录中包含的所有内容执行命令其中包含的目录,依此类推,直到没有其他任何内容。

【讨论】:

另外,如果你想知道你的用户属于哪个组,你可以参考这个。 ***.com/questions/350141/… 但是,如果必须安装到 /usr/local/bin 目录,您可能需要小心更改所有权。 更改 /usr、/Library 或 /var 路径等中任何内容的所有权是个坏主意。由于文件和驱动程序不再可访问,系统可能会停止,如果安装程序检测到路径不再由 root:wheel 拥有,未来的更新可能会中断。修复损坏可能非常困难,通常最好通过重新安装操作系统来完成。天真/没有经验的用户对操作系统了解不够,无法了解哪些文件/目录可能是安全的,应注意不要在家尝试。 大声笑,这是一个令人尴尬的答案。 :) 我猜现在更老更聪明了。【参考方案16】:

sudo chown -R $USER /Library/Ruby/Gems/

【讨论】:

【参考方案17】:

为我工作:

sudo gem uninstall cocoapods

sudo gem install cocoapods

【讨论】:

为我工作太棒了!谢谢。节省安装 rbenv 或 RVM 的工作量 投反对票,因为正如在其他 cmets 中所指出的那样,以 root 身份安装 gems 是一种危险的做法。安装程序可以对您的系统执行任何操作。 @SomeGuy:“安装程序实际上可以做任何事情”......用户自己更有可能使用命令并破坏系统。我想不出安装程序何时搞砸了我的系统,但我清楚地记得我做过的时间。 sudo 是新手喜欢的命令,因为它可以很容易地做错事,并且在使用它时需要数年时间才能学会适当的偏执。 最佳答案!!!运行这两个命令后,请重新启动终端,仅此而已!!!非常感谢!!!【参考方案18】:

通过brew install rbenv安装rbenv;

然后把eval "$(rbenv init -)"放在~/.bash_profile(或~/.zshrc MacOS);

打开一个新终端并运行gem install *** 即可!

【讨论】:

对我不起作用❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.【参考方案19】:

检查您的 Ruby 版本是否正确。如果不是,请更改它。

这对我有用:

$ rbenv global 1.9.3-p547
$ gem update --system

【讨论】:

这是更好的解决方案:update > chown。谢谢! .我还必须运行brew install ruby【参考方案20】:

正如 bobbdelsol 所指出的,rehash 对我有用:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...

【讨论】:

太接近了。然而“错误:执行 gem 时 ... (Gem::FilePermissionError) 您没有 /Library/Ruby/Gems/2.0.0 目录的写入权限。”【参考方案21】:

在 MacOS Mojave 上测试成功:

    卸载所有旧的 ruby​​ 版本(假设您有 2.00 和 2.3.0):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

    安装全新的 ruby​​ 版本:

    $ brew install ruby

    为您的版本设置默认别名:

    $ rvm alias create default ruby

    重新启动您的系统,因为这是您的计算机加载最近安装的新 ruby​​ 版本的最安全方式。

完成上述步骤后,您可以成功运行任何gem 命令。

【讨论】:

【参考方案22】:

您可以更改GEM_HOME。你的主目录下还有一个 gem 文件夹来检查它的使用

$ gem env

结果如下。不相关的部分省略。

...
  - GEM PATHS:
     - /Users/xxx/.gem/ruby/2.6.0
     - /Library/Ruby/Gems/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
...
 

您可以使用您的/Users/xxx/.gem/ruby/2.6.0 文件夹。

vim ~/.bash_profile

添加以下行

export GEM_HOME=~/.gem/ruby/2.6.0/

之后就可以使用了

source ~/.bash_profile 

【讨论】:

【参考方案23】:

提供2021解决方案(使用rvm):

首先,如果你在终端输入which ruby

显示/usr/bin/ruby,你可以试试这个解决方案。

    安装 rvm
curl -L https://get.rvm.io | bash -s stable
    使用 rvm 安装 ruby​​
rvm install "ruby-3.0.0”
    使用您安装的 ruby​​ 版本
rvm use ruby-3.0.0
    再次输入which ruby

将显示/Users/mac_user_name/.rvm/rubies/ruby-3.0.0/bin/ruby

这是使用 ruby​​ 的新途径。

【讨论】:

【参考方案24】:

cd /Library/Ruby/Gems/2.0.0

打开。

右键获取信息

点击锁定

输入密码

让一切都可以读写。

【讨论】:

请花时间格式化您的答案以提高可读性。您投入研究和解释的努力得到了回报。【参考方案25】:

安装 gem 或更新 RubyGems 失败并出现权限错误然后键入此命令

sudo gem install cocoapods

【讨论】:

其他答案中已对此进行了介绍。请在创建之前阅读其他答案,以确保您的答案提供新内容。【参考方案26】:

你可以使用:gem install cocoapods --pre --user

【讨论】:

【参考方案27】:

让用户 $whoami 在这些文件夹中创建一些东西

sudo chown -R user /Library/Ruby/Gems/2.0.0

【讨论】:

没有。该文件夹归系统所有是有充分理由的,系统将其用于自己的目的。运行指向它的脚本是可以的,但如果你想弄乱它,请创建并使用沙盒 Ruby。【参考方案28】:

我用过这个并且工作过。

$ sudo chown myuser /var/lib/gems

【讨论】:

查看其他答案中关于使用sudo的cmets。【参考方案29】:

错误的原因是你没有在终端上以root用户身份登录。

如果您已经在终端类型的 Mac 上启用了 root 使用权限

$ su

如果您没有root用户,则需要使用以下步骤启用它

    从 Apple 菜单中选择系统偏好设置...。 从“查看”菜单中选择“用户和组”。 单击锁并以管理员帐户身份验证。 单击登录选项...。​​ 点击右下角的“编辑...”或“加入...”按钮。 单击“打开目录实用程序...”按钮。 单击“目录实用程序”窗口中的锁。 输入管理员帐户名和密码,然后单击“确定”。 从“编辑”菜单中选择“启用 Root 用户”。 在“密码”和“验证”字段中输入您希望使用的根密码,然后单击“确定”。

更多内容请关注http://support.apple.com/kb/ht1528

至少在卡住几个小时后它对我有用。

【讨论】:

为什么要投反对票?你们能写出这样做的理由吗? 以 root 身份安装 gems 是个坏主意。 ***.com/questions/2119064/…

以上是关于如果由于权限错误而失败,如何安装 gem 或更新 RubyGems的主要内容,如果未能解决你的问题,请参考以下文章

gem install / update失败,“没有将nil隐式转换为String”

`bundle install` 由于权限被拒绝而失败

gem 安装失败,无法识别“补丁”(Windows)

由于 sqlite3 gem 错误,Heroku 部署失败

错误:由于环境错误而无法安装软件包:[Errno 13] 权限被拒绝:我如何解决? [关闭]

Rails:“bundle install”由于旧的 rails 版本(3.2)而失败