如何在 Mac OS X 上不使用 sudo 安装 gems

How to install gems without sudo on Mac OS X

我已经阅读了很多帖子,但 none 到目前为止已经成功了。

如何在 OSX(El Capitan Beta)上为我自己的用户安装 gem?例如,帖子建议指定 -user-install,但我根本无法在没有 sudo 的情况下调用 gem,因为它会引发权限错误。

我关注了“Install gem as user on OSX 10.10 Yosemite”,但仍然无法调用gem

我安装了 Homebrew,按照上面的指南安装了 rbenv,安装了带有 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 环境转储:

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

"" 似乎是相关的,尽管它没有解决,除非使用我可能不得不做的其他方法。

我首先推荐 Homebrew,这是 OSX 上开发人员的热门选择,它不需要 sudo。你可以做 brew install ruby 然后从那里开始。

出于同样的原因,也可以尝试 RVM and rbenv 等沙盒环境。

我认为让你的 gem 运行 在所有项目和本地工作的最佳解决方案是使用 bundler 并确保安装 运行

bundle install --path vendor/bundle

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

如果没有 sudo 就无法使用 gem,这听起来像是您没有正确初始化 rbenv,因为垫片不可用。

这些步骤来自the documentation。确认你做到了 ALL:

Add ~/.rbenv/bin to your $PATH for access to the rbenv command-line utility.

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

Ubuntu Desktop note: Modify your ~/.bashrc instead of ~/.bash_profile.

Zsh note: Modify your ~/.zshrc file instead of ~/.bash_profile.

Add rbenv init to your shell to enable shims and autocompletion.

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

Same as in previous step, use ~/.bashrc on Ubuntu, or ~/.zshrc for Zsh.

Restart your shell so that PATH changes take effect. (Opening a new terminal tab will usually do it.) Now check if rbenv was set up:

$ type rbenv
#=> "rbenv is a function"

正如其他人所提到的,有安全的方法可以在 Mac 上安装 Ruby gem。在高层次上,这涉及六个步骤:

  1. 安装 Homebrew(同时安装必备的 Apple 命令行工具)
  2. 安装 Ruby 管理器(例如 chruby、rbenv、asdf、RVM)- 其中大部分都可以使用 Homebrew 安装
  3. 通过将适当的行添加到您的 shell 文件(~/.bash_profile~/.zshrc)来配置 Ruby 管理器 - 每个管理器都会有执行此操作的说明,并且这是人们错过的典型步骤
  4. 重新启动终端以使 shell 更改生效 - 另一个经常被忽视的步骤
  5. 使用 Ruby 管理器
  6. 安装特定版本的 Ruby
  7. 使用 Ruby 管理器
  8. 切换到那个版本的 Ruby

我个人的偏好是chruby with ruby-install。有关更多详细信息和可以自动执行整个过程的脚本,请在此处查看我的回答: