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

时间:2018-07-01 19:33:00

标签: macos rubygems install bundler atom-editor

下面是我需要做的。

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

所以,我输入 gem安装捆绑器 到终端,并得到     您对/Library/Ruby/Gems/2.3.0目录没有写权限。

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

我的问题是:

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

非常感谢您!

22 个答案:

答案 0 :(得分:19)

您是正确的,macOS不允许您使用Mac随附的Ruby版本进行任何更改。但是,可以使用不干扰Apple提供的Ruby的另一版本来安装bundler之类的gem。

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

该解决方案涉及两个主要步骤:

  1. 安装单独的Ruby版本,该版本不会干扰Mac随附的版本。
  2. 更新您的PATH,以使新Ruby版本的位置位于PATH中。目录列表以及计算机查找可执行程序的顺序称为PATH。如果在终端中输入echo $PATH,将看到目录列表,以冒号分隔。

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

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

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

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

  • 自制软件-安装完成后,用brew install ruby安装ruby,然后通过运行PATH,然后是echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
  • 更新source ~/.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,现在就可以安装捆绑程序:

gem install bundler

答案 1 :(得分:5)

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

gem install name_of_gem --user-install

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

修改

有一个我仍然无法安装的宝石(它需要Ruby开发工具包的Ruby.h标头之类的东西),然后我尝试了不同的版本管理器,但是以某种方式仍然无法正常工作,如所述。有关如何仅安装和切换文档(只是没有切换版本)的文档。 然后,我删除了所有已安装的版本管理器,然后使用brew install ruby安装了最新版本,并且也设置了PATH变量。 (安装了brew中的红宝石后会提到),该方法有效。

答案 2 :(得分:5)

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

安装

$ brew update
$ brew install rbenv

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

eval "$(rbenv init -)"

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

$ rbenv install -l

例如安装2.3.8版

$ rbenv install 2.3.8

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

$ rbenv global 2.3.8

终于运行了

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

加油

现在安装打包器

$ gem install bundler

大功告成!

答案 3 :(得分:3)

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

sudo gem update

答案 4 :(得分:3)

尝试 1 或 2

1 - $ gem install cocoapods
2 - $ sudo gem install cocoapods

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

export GEM_HOME="$HOME/.gem"

然后再试一次:

gem install cocoapods

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

答案 5 :(得分:2)

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

brew install ruby
gem install rails

答案 6 :(得分:2)

通常建议使用rbenvrvm之类的版本管理器。否则,安装的宝石将以-- FUNCTION: public.asyncmultiplerecs() -- DROP FUNCTION public.asyncmultiplerecs(); CREATE OR REPLACE FUNCTION public.asyncmultiplerecs() RETURNS SETOF refcursor LANGUAGE 'plpgsql' COST 100.0 AS $function$ DECLARE ref1 refcursor; -- Declare cursor variables ref2 refcursor; ref3 refcursor; ref4 refcursor; BEGIN OPEN ref1 FOR SELECT bk_channel_id,promotion_id FROM cs_promotion_offer_exclusions; RETURN NEXT ref1; OPEN ref2 FOR SELECT mastergroup,promo_grp_id FROM cs_promotion_group_master; RETURN NEXT ref2; OPEN ref3 FOR SELECT promotion_usoc,promotion_duration FROM cs_promotion_target_details; RETURN NEXT ref2; OPEN ref4 FOR SELECT promotion_id,offer_id FROM cs_promotion_details; RETURN NEXT ref4; END; $function$; 的形式提供给其他用户。

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

答案 7 :(得分:1)

运行此

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

eval "$(rbenv init -)"

遵循说明,(在我的情况下,添加到〜/ .zshrc );)


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

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

答案 8 :(得分:1)

应该使用不同的 ruby​​ 安装。为此,我使用 rbenv

const startTime = new Date(-4600, 0, 1, 12, 0);
console.log(startTime.toISOString());

免责声明:我不是红宝石人。这对我有用,如果您是 ruby​​ 专家并且看到此答案中的变化,请继续或发表评论!

答案 9 :(得分:1)

TL;DR

有几次,我通过在重试失败的命令之前关闭终端会话并打开一个新会话来解决此类错误。

详细解释

在某些 SO(例如 MacOS)中,已经预装了系统范围的 ruby​​ 版本。如果您使用的是版本管理器,例如 rbenvasdf,它们的工作方式是使用您当前会话的环境,以便相关命令指向版本管理器安装的二进制文件。

安装新二进制文件时,版本管理器会将其安装在一个特殊位置,通常在用户主目录下的某个位置。然后它会配置您的 PATH 中的所有内容,以便您在发出命令时获得新安装的二进制文件,而不是系统附带的二进制文件。但是,如果您不重新启动会话(还有其他方法可以更新您的环境,但这是最简单的方法),您将无法获得新配置,而将使用原始安装。

答案 10 :(得分:1)

MAC 的解决方案。运行命令

sudo gem update    

然后在提示时输入您的 Mac 密码

答案 11 :(得分:0)

我使用下面的命令安装 fastlane 但没有成功

<块引用>

gem install fastlane -NV

所以使用 sudo 来安装 gems 对我有用,就像

<块引用>

sudo gem install fastlane -NV

答案 12 :(得分:0)

您需要安装rbenv并在rbenv下维护ruby版本。

  1. brew install rbenv
  2. rbenv init
  3. eval "$(rbenv init -)" 附加到 ~/.bash_profile
  4. rbenv install {stable_version_#} 您可以使用 rbenv install -L
  5. 获取版本号
  6. rbenv global {your_preferred_version_#} 命令用于切换到 ruby​​ 版本
  7. rbenv shell {your_preferred_version_#}
  8. gem install {whatever you want gems}

更多细节https://github.com/rbenv/rbenv

答案 13 :(得分:0)

只需导出 GEM_HOME:

export GEM_HOME="$HOME/.gem"

然后尝试:

gem install cocoapods

答案 14 :(得分:0)

在尝试之前的方法后,这对我在 Big Sur 有用:

sudo gem install -n /usr/local/bin cocoapods

答案 15 :(得分:0)

试试这个:

sudo gem install cocoapods --user-install

为我工作

答案 16 :(得分:0)

如果您分别安装了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的工作方式。 让我知道这是否有效。

答案 17 :(得分:0)

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

解决方案对我有用:sudo gem install rails -v 6.0.0

答案 18 :(得分:0)

Mac解决方案

  1. 使用上一个红宝石版本安装/更新RVM

    \curl -sSL https://get.rvm.io | bash -s stable

  2. 安装bundler

    gem install bundler


在这两个命令(sudo) gem install ....开始起作用之后

答案 19 :(得分:-1)

我正在将Mojave与rbenv配合使用,该解决方案适用于我:

$ vi ~/.bash_profile

将此行添加到文件中

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

答案 20 :(得分:-1)

这在Mac上对我有用

sudo chown -R $(whoami)$(brew --prefix)/ *

答案 21 :(得分:-2)

简单地做 sudo gem uninstall cocoapods为我工作。