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


132

下面是我需要做的。

要运行规格,您需要安装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"

我的问题是:

似乎终端正在给我响应,因为我不应该更改红宝石上的任何东西,而我需要bundle install在原子内部?谁能告诉我如何使用原子或在原子中运行任何东西?

Answers:


243

更新:从那以后,我就在Mac上安装Ruby gem的各种方式写了非常详细的说明。我最初使用脚本的建议仍然存在,但是我的文章更加详细:https//www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

您是正确的,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

应该不是 /usr/bin/ruby

ruby -v

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

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

gem install bundler

3
如果您像我一样,并且使用zsh(或bash以外的其他shell),则还有一个额外的步骤!安装后,rbenv您必须做echo 'eval "$(rbenv init -)"' >> ~/.bash_profile来源
Marlo

2
如果您在/ usr / local目录上遇到权限错误,请运行sudo chown -R $(whoami) $(brew --prefix)/*。看到这个线程的详细信息
阿纳斯Tiour

5
这非常有帮助...应将其设置为正确答案。
斯潘塞·穆勒·迪尼兹(SpencerMüllerDiniz),

4
由于MacOS鼓励人们切换到zsh,因此您还应该将〜/ .bash_profile的更改应用到〜/ .zshrc。
–'Adam_G

1
@stevec也许您错过了rbenv安装说明中的某些步骤?还是您没有退出并重新启动终端?我会在这里按照rbenv的说明进行操作:github.com/rbenv/rbenv#installation。如果您愿意使用它chruby,我强烈建议您使用一个脚本来为您进行设置,例如:github.com/monfresh/install-ruby-on-macos。在运行该脚本之前,您需要先卸载rbenv:github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

69

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

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

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


4
在卡特琳娜OS😐没有帮助
埃弗拉特列维坦

更新了我的答案
STIKO 19-10-16

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Efrat Levitan

听起来您正在尝试运行rails命令。我最近的两个命令不运行rails命令。尝试在项目外部打开一个新终端,然后一一复制我的答案的最后两行。
STIKO

别忘了source ~/. zshrc(或~/.bash_profile
gordinmitya

65

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

gem install name_of_gem --user-install

然后,他开始获取并安装它。

编辑

我仍然无法安装一个宝石(它需要Ruby开发工具包的Ruby.h标头或其他东西),然后我尝试了不同的版本管理器,但由于文档中的说明,它仍然无法正常工作仅安装和切换(它没有切换版本)。然后,我删除了所有已安装的版本管理器,然后安装brew install ruby了最新版本,并且也设置了PATH变量。(这将在安装来自brew的红宝石之后提及),该方法起作用了。


6

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

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



3

运行这个

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

eval "$(rbenv init -)"

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


同样重要:更改仅在重新启动控制台后才生效。两种选择

  • 输入 source <modified file>
  • 关闭并再次打开

我升级到卡塔利娜(从庆典到zsh的开关),我忘记复制从一切.bash_profile交给.zshrc
wetjosh

2

如果您分别安装了ruby并使用rbenv / rvm安装了ruby,那么budler可能会指向不同的版本。

尝试

gem env home

ruby -v

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

为了使gem正常工作,您必须调用rbenv,

rbenv shell <ruby version> 

rbenv global <ruby version>

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


缺少设置外壳程序和全局。为什么在rbenv说明中不这样?
feitla

不知道为什么错过了它,我在尝试后就能找到答案。
Bharathan Kumaran


-1

这在Mac上对我有用

须藤chown -R $ {whoami)$ {brew --prefix)/ *



-2

我遇到的问题:-您没有对/Library/Ruby/Gems/2.6.0目录的写权限。

解决方案为我工作:sudo gem install rails -v 6.0.0



-3

对于Mac用户,请使用sudo ex sudo gem install cocoapods


尽管该命令可以解决问题,但包括如何解决以及如何解决该问题的说明,确实有助于提高您的帖子质量,并可能导致更多的投票。请记住,您将来会为读者回答问题,而不仅仅是现在问的人。请编辑您的答案以添加说明,并指出适用的限制和假设。
布赖恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.