如何在Mac OS X上无需sudo安装gems

5
我已经阅读了许多帖子,但迄今为止还没有解决问题的。如何在OSX(El Capitan Beta)上为自己的用户安装gem?例如,帖子建议指定-user-install,但我根本无法调用gem而不使用sudo,因为它会抛出权限错误。
我遵循了“在OSX 10.10 Yosemite上将gem安装为用户”,但仍然无法调用gem。
我安装了Homebrew,按照上述指南安装了rbenv,安装了一个版本的Ruby,并检查了它是否正确加载,但指南中的最后一步是调用gem install,我仍然无法做到这一点。
在安装rbenv后调用gem会导致:
/Users/Me/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/stub_specification.rb:71:in `initialize': 
Permission denied @ rb_sysopen - /Users/Ne/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/speci

rbenv env dump:

RBENV_VERSION=2.1.5
RBENV_ROOT=/Users/Me/.rbenv
RBENV_HOOK_PATH=:/Users/Me/.rbenv/rbenv.d:
  /usr/local/etc/rbenv.d:
  /etc/rbenv.d:
  /usr/lib/rbenv/hooks
PATH=/Users/Me/.rbenv/versions/2.1.5/bin:
  /usr/local/Cellar/rbenv/0.4.0/libexec:
  /Users/Me/.rbenv/plugins/rbenv-env/bin:
  /Users/Me/.rbenv/shims:
  /usr/local/heroku/bin:
  /usr/local/sbin:
  /usr/local/bin:
  /usr/local/share/npm/bin:
  /Applications/Atom.app/Contents/Resources/app/apm/bin:
  /Users/Me/.bin:
  /Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/bin:
  /usr/local/bin:/usr/bin:
  /bin:
  /usr/sbin:/sbin:
  /opt/X11/bin:
  /usr/local/MacGPG2/bin
RBENV_DIR=/Users/Me/.rbenv/plugins

"

每当我运行brew和gem时,都会抛出'Permission denied'错误,似乎与"brew and gem both throws 'Permission denied' error whenever I run it"相关,尽管除了使用其他方法解决之外,没有得到解决。

"

1
请注意,不要使用sudo命令,因为那会更改Apple安装的Ruby版本。您是否使用rbenv或RVM将Ruby放入自己主目录下的沙盒中?请不要请求我们前往其他网站阅读其文档以帮助您,因为链接会失效,那么您的问题对任何人来说都毫无用处。告诉我们您尝试过什么,以及出现了什么错误或者它们为什么不起作用。 - the Tin Man
请将rbenv env的输出结果按易读性格式化后添加到您的问题中。您可以在 https://github.com/ianheggie/rbenv-env 找到它。此外,请问 rbenv whence gem 的输出结果是什么?由于gem已经被Ruby安装,所以除非您使用的是非常旧的(并且不再受支持的)版本的Ruby,否则它应该已经被安装了。 - the Tin Man
你是否按照rbenv网站上的安装命令进行操作?如果没有,请删除~/.rbenv目录,卸载Homebrew安装的rbenv版本,并重新按照官方文档安装rbenv。在处理像rbenv或RVM这样快速移动的工具时,不要遵循其他人发布的指导。真正了解其工作原理的人才是你应该追随的人。Homebrew是一个用于缺失库等的绝妙工具,但对于这些工具,请遵循rbenv和/或RVM文档。 - the Tin Man
"--user-install"(符号前面有两个减号)在Sierra上对我有效。 - Chih-Hsuan Yen
4个回答

6
如果您无法在没有使用sudo的情况下使用gem,那么似乎您还没有正确初始化rbenv,因为shims不可用。

这些步骤来自文档。请确认您全部都执行了:

将~/.rbenv/bin添加到您的$PATH中,以便访问rbenv命令行实用程序。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

Ubuntu桌面版注意:请修改您的~/.bashrc文件而非~/.bash_profile文件。

Zsh注意:请修改您的~/.zshrc文件而非~/.bash_profile文件。

将rbenv init添加到您的shell中以启用shims和自动补全功能。

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

与前一步相同,对于Ubuntu,请使用~/.bashrc;对于Zsh,请使用~/.zshrc。
重新启动您的shell以使PATH更改生效。(通常打开一个新的终端选项卡即可。)现在检查是否已设置rbenv。
$ type rbenv
#=> "rbenv is a function"

我有上述内容 - 为了确保我重新做了一遍,打开了一个新的模板,但仍然出现了“stub_specification.rb”错误。 - cyberwombat
这是我刚刚发现的一个帖子,与此问题相同 - 不清楚如何解决它 http://stackoverflow.com/questions/29555478/brew-and-gem-both-throws-permission-denied-error-whenever-i-run-it - cyberwombat
好的。删除我的 .rbenv 目录并重新安装 Ruby 解决了问题。我之前有一个权限奇怪的旧版本安装。 - cyberwombat
1
非常重要的是,您的PATH中必须同时包含.rbenv/shims和.rbenv/bin。 - Dave Collins
rbenv的默认安装是安装rbenv的权威来源。按照这些说明操作,应该可以得到一个运行中的rbenv管理环境。echo 'eval "$(rbenv init -)"' >> ~/.bash_profile这一行将根据特定环境指定其他所需内容,在我的机器上是shims路径。不要盲目地将shims添加到PATH中,因为可能会错过rbenv init执行的其他操作。 - the Tin Man

3
我首先推荐 Homebrew,这是OSX开发者中流行的选择,而且不需要sudo。你可以使用 brew install ruby 命令进行安装并继续操作。
此外,出于同样的原因,也可以尝试使用沙箱环境,例如 RVMrbenv

我已经编辑了我的帖子 - 我有brew,rbenv,但仍然遇到权限错误。 - cyberwombat

1
我认为让你的宝石在所有项目和本地运行的最佳解决方案是使用bundler,并确保安装运行。
bundle install --path vendor/bundle

这将在你的项目中创建一个 vendor/bundle 文件夹,你应该将其添加到 .gitignore 文件中。

1

正如其他人提到的,Mac上有安全的方法来安装Ruby gems。从高层次上讲,这包括以下六个步骤:

  1. 安装Homebrew(它也会安装必备的Apple命令行工具)
  2. 安装一个Ruby管理器(例如chruby、rbenv、asdf、RVM)-其中大多数可以使用Homebrew安装
  3. 通过向shell文件(~/.bash_profile~/.zshrc)添加适当的行来配置Ruby管理器-每个管理器都会有相应的说明,并且这是人们经常忽略的典型步骤
  4. 重新启动终端以使shell更改生效-另一个常常被忽视的步骤
  5. 使用Ruby管理器安装特定版本的Ruby
  6. 使用Ruby管理器切换到该版本的Ruby
我的个人偏好是使用 chrubyruby-install。如需了解更多细节以及一个可以自动化整个过程的脚本,请查看我在此处的回答:https://dev59.com/llUK5IYBdhLWcg3w4jQv#54873916

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