您没有对/Library/Ruby/Gems/2.3.0目录的写许可权。(Mac用户)

use*_*236 37 macos install rubygems bundler atom-editor

下面是我需要做的。

要运行规格,您需要安装RSpec。首先,在项目的根目录中运行gem install bundler。然后,运行bundle install。要运行单个规格文件,请运行如下命令:bundle exec rspec spec / 00_hello_spec.rb。要一次运行所有规格,请运行bundle exec rspec

因此,我在终端输入了gem install bundler,并得到了 您对/Library/Ruby/Gems/2.3.0目录没有写权限。

这是在项目文件中的原子* source“ https://rubygems.org ” gem“ rspec”,“〜> 3.2.0” *

我的问题是:

似乎终端机给了我响应,因为我不应该更改ruby上的任何内容,而需要将安装包捆绑在atom内吗?谁能告诉我如何使用原子或在原子中运行任何东西?

非常感谢!

Ste*_*ein 111

使用--user-install运行以下命令的参数为我工作:

gem install name_of_gem --user-install
Run Code Online (Sandbox Code Playgroud)

编辑

有一个 gem 我仍然无法安装(它需要 Ruby 开发工具包的 Ruby.h 头文件或其他东西),然后我尝试了不同的版本管理器,但不知何故,它仍然没有真正起作用,因为它在文档中说明如何只是安装和切换(它只是没有切换版本)。然后我删除了所有已安装的版本管理器,然后安装brew install ruby了最新版本,并设置了 PATH 变量。(从 brew 安装 ruby​​ 后会提到),有效。

  • 这应该是选择的答案。M1 芯片尚不支持 Brew,但这就像一个魅力。 (3认同)
  • 为什么这个答案在列表中如此靠后?这是正确的答案。 (2认同)

mon*_*esh 83

您是正确的,macOS不允许您使用Mac随附的Ruby版本进行任何更改。但是,可以安装宝石,例如bundler使用不干扰Apple提供的Ruby的单独版本。

sudo即使您知道自己在做什么,也强烈建议不要使用安装gem或更改系统文件和目录的权限。我们可以停止提供这个坏建议吗?

该解决方案包括两个主要步骤:

  1. 安装另一种不干扰Mac随附版本的Ruby。
  2. 更新您PATH的代码,使新Ruby版本的位置在中PATH。目录列表以及计算机查找可执行程序的顺序PATH。如果键入echo $PATHTerminal,您将看到目录列表,以冒号分隔。

有几种方法可以在Mac上安装Ruby。我建议并希望在各种安装说明中更加流行的最佳方法是使用自动脚本,该脚本将为您设置合适的Ruby环境。这将大大减少由于指令不足而导致出错的可能性,这些指令会使用户手动执行大量操作,然后由用户自己决定所有必要步骤。

您可以采取的另一种方法是花费额外的时间手动执行所有操作,并希望做到最好。首先,您将需要安装Homebrew,这使得安装其他工具和macOS应用程序变得容易。

然后,安装单独的Ruby版本的4种最流行的方法是:

如果您不需要同时使用多个版本的Ruby(macOS随附的版本除外)

  • 自制软件-安装完成后,请使用安装ruby brew install ruby,然后PATH通过运行echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profilesource ~/.bash_profile

如果您想在多个Ruby版本之间轻松切换的灵活性

  • chrubyruby- install-我的个人建议以及上述脚本自动安装的建议。这些可以与Homebrew一起安装。

  • rbenv-可以与Homebrew一起安装

  • RVM

要检查您是否正在使用非系统版本的Ruby,可以运行以下命令:

which ruby
Run Code Online (Sandbox Code Playgroud)

应该不是 /usr/bin/ruby

ruby -v
Run Code Online (Sandbox Code Playgroud)

它应该不是2.3.7。到目前为止,2.6.1是最新的Ruby版本。

一旦安装了这个新版本的Ruby,现在就可以安装bundler:

gem install bundler
Run Code Online (Sandbox Code Playgroud)

  • 如果您像我一样使用 zsh(或除 bash 之外的其他 shell),还有一个额外的步骤!安装完 `rbenv` 后,你必须执行 `echo 'eval "$(rbenv init -)"' >> ~/.bash_profile`。[来源](https://gist.github.com/stonehippo/cc0f3098516fb52390f1) (8认同)
  • 这非常有帮助...应该将其设置为正确答案。 (7认同)
  • 由于 MacOS 鼓励人们切换到 zsh,因此您还应该将 ~/.bash_profile 的更改应用到 ~/.zshrc。 (6认同)
  • 链接已被阻止,您需要订阅时事通讯(哇)。 (4认同)
  • 您不必订阅时事通讯。您可以从这里获取脚本:https://github.com/monfresh/install-ruby-on-macos。 (3认同)
  • 如果您在 /usr/local 目录上遇到权限错误,请运行 `sudo chown -R $(whoami) $(brew --prefix)/*`。有关更多信息,请参阅此 [thread](/sf/ask/3449740171/) (2认同)

Sar*_*gis 22

尝试这个:

sudo gem install cocoapods --user-install
Run Code Online (Sandbox Code Playgroud)

为我工作


Pee*_*bib 13

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

就我而言,问题与 ruby​​ 访问有关,以及我的系统中 ruby​​ 路径如何混乱。

以下步骤帮助我解决了问题

  1. 打开终端

  2. 使用自制程序安装 ruby

[全新安装]brew install ruby

[用于重新安装]brew reinstall ruby

  1. 使用以下命令检查 ruby​​ 的路径

    which ruby

  2. 它应该安装在以下路径中

    /usr/bin/ruby

  3. 将 ruby​​ 路径更改为用户路径

检查您的系统使用哪个 shell

echo $0

-zsh
Run Code Online (Sandbox Code Playgroud)

对于 zshrc

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/.zshrc

对于bash

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/~/.bashrc

  1. 退出并重新启动终端

  2. 通过步骤 5 更改路径后

  3. 再次检查 ruby​​ 的路径(执行步骤 3 - 请确保路径显示如下)

/usr/local/opt/ruby/bin/ruby

[如果不退出并启动终端,将显示第 4 步路径]

  1. 此步骤可能不适用于所有人,如果您安装了正确的 Cocoapods 版本,可以跳过步骤 10 和 11

检查安装的pod版本

pod --version

  1. 使用以下命令卸载特定版本的 Cocoapods

如果安装的版本是1.11.0

gem uninstall cocoapods -v 1.11.0

  1. 安装特定版本的Cocoapods

    gem 安装 cocoapods -v 1.11.0

  2. 更改项目目录的路径 cd {项目目录的路径}

  3. 在项目目录中安装捆绑程序

bundle install

  1. 执行 Pod 安装

pod install


Arj*_*tel 10

安装 macOS Catalina 后,我遇到了同样的问题。我尝试了以下命令及其工作。

sudo gem update
Run Code Online (Sandbox Code Playgroud)

  • 您永远不应该使用“sudo”来安装您无法控制的任何类型的开发依赖项。 (4认同)

Muh*_*cha 10

只需导出 GEM_HOME:

export GEM_HOME="$HOME/.gem"
Run Code Online (Sandbox Code Playgroud)

然后尝试:

gem install cocoapods
Run Code Online (Sandbox Code Playgroud)

  • 错误:执行 gem 时...(Errno::EACCES)权限被拒绝@dir_s_mkdir - /Users/kanchan/.local/share/gem/specs (4认同)
  • 你绝对是救星。比其他发布的解决方案容易得多 (2认同)

STI*_*IKO 8

如果您不想运行,sudo请使用自制软件安装ruby

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails
Run Code Online (Sandbox Code Playgroud)

您可能要添加export GEM_HOME="$HOME/.gem"到您的文件中,~/.bash_profile或者.zshrc如果您正在使用zsh

  • 对 Catalina 操作系统没有帮助 (7认同)

Ped*_*eno 8

在 M1 MacBook Air 上测试(假设安装了 Homebrew)

根据最上面的答案,我们可以运行:

brew install chruby ruby-install
Run Code Online (Sandbox Code Playgroud)

要安装最新的稳定版 ruby​​:

ruby-install ruby
Run Code Online (Sandbox Code Playgroud)

然后通过运行获取版本号:

chruby
Run Code Online (Sandbox Code Playgroud)

在你的 ~/.zshrc 文件中:

export PATH=/opt/homebrew/bin:$PATH
source /opt/homebrew/opt/chruby/share/chruby/chruby.sh
source /opt/homebrew/opt/chruby/share/chruby/auto.sh
chruby 3.1.2
Run Code Online (Sandbox Code Playgroud)

“3.1.2”是我运行 chruby 时得到的输出。确保在最后添加这一行。

请记住每次安装新 gem 时重新启动终端。


Mic*_*ick 7

正如@idleberg 提到的,在 Mac OS 上,最好安装rbenv以避免在使用手动安装的 ruby​​ 时出现权限错误。

安装

$ brew update
$ brew install rbenv
Run Code Online (Sandbox Code Playgroud)

.bashrc文件中添加以下内容:

$ brew update
$ brew install rbenv
Run Code Online (Sandbox Code Playgroud)

现在,我们可以查看可供安装的 ruby​​ 版本列表

eval "$(rbenv init -)"
Run Code Online (Sandbox Code Playgroud)

例如安装版本 2.3.8

$ rbenv install -l
Run Code Online (Sandbox Code Playgroud)

现在我们可以全局使用这个 ruby​​ 版本

$ rbenv install 2.3.8
Run Code Online (Sandbox Code Playgroud)

最后运行

$ rbenv global 2.3.8
Run Code Online (Sandbox Code Playgroud)
$ rbenv rehash
Run Code Online (Sandbox Code Playgroud)

去吧

现在安装捆绑器

$ which ruby
/Users/myuser/.rbenv/shims/ruby
$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-darwin17]
Run Code Online (Sandbox Code Playgroud)

全部完成!

  • 这应该是公认的答案。 (14认同)

小智 7

为了解决这个问题,我跑了

brew reinstall ruby
Run Code Online (Sandbox Code Playgroud)

这向我展示了这条消息

==> Caveats
==> ruby
By default, binaries installed by gem will be placed into:
  /opt/homebrew/lib/ruby/gems/3.1.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)

所以我将这两行添加到我的~/.bashrc文件中

==> Caveats
==> ruby
By default, binaries installed by gem will be placed into:
  /opt/homebrew/lib/ruby/gems/3.1.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
  echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.profile
Run Code Online (Sandbox Code Playgroud)

然后我打开一个新的 Terminal.app 窗口并再次运行我的gem install命令,它起作用了。


tom*_*ios 6

运行这个

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"
Run Code Online (Sandbox Code Playgroud)

按照说明进行操作(在我的情况下添加到~/.zshrc);)


同样重要的是:更改仅在您重新启动控制台时生效。两种选择

  • 进入 source <modified file>
  • 关闭再打开


Mat*_*elo 6

尝试 1 或 2

1 - $ gem install cocoapods
2 - $ sudo gem install cocoapods
Run Code Online (Sandbox Code Playgroud)

如果不起作用,则导出 GEM_HOME:

export GEM_HOME="$HOME/.gem"
Run Code Online (Sandbox Code Playgroud)

然后再试一次:

gem install cocoapods
Run Code Online (Sandbox Code Playgroud)

请记住官方文档说您可以使用 sudo (https://guides.cocoapods.org/using/getting-started.html#getting-started)。

  • `export GEM_HOME="$HOME/.gem"` 对我有用 (2认同)

idl*_*erg 5

通常建议使用类似rbenv或的版本管理器rvm。否则,已安装的宝石将与root其他用户一样可用。

如果您知道自己在做什么,则可以使用sudo gem install


Bha*_*ran 5

如果您单独安装了 ruby​​ 并使用 rbenv/rvm 安装了 ruby​​,则 budler 可能会指向不同的版本。

尝试

gem env home
Run Code Online (Sandbox Code Playgroud)

ruby -v
Run Code Online (Sandbox Code Playgroud)

两者应该指向相同的版本。检查您是否使用 rbenv/rvm 安装了 ruby​​,如果是,请删除您单独安装的 ruby​​ 版本。

为了让 gem 工作,你必须调用 rbenv,

rbenv shell <ruby version> 
Run Code Online (Sandbox Code Playgroud)

rbenv global <ruby version>
Run Code Online (Sandbox Code Playgroud)

我不确定 RVM 是如何工作的。让我知道这个是否奏效。