【问题标题】:How to install gems without sudo on Mac OS X如何在 Mac OS X 上不使用 sudo 安装 gems
【发布时间】:2015-10-03 12:57:58
【问题描述】:

我已经阅读了很多帖子,但到目前为止还没有一个可以做到这一点。

如何在 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

"brew and gem both throws 'Permission denied' error whenever I run it" 似乎是相关的,尽管它没有解决,除非使用我可能必须做的其他方法。

【问题讨论】:

  • 正确,不要使用sudo,因为这会修改为Apple 使用而安装的Ruby。您是否使用 rbenv 或 RVM 将 Ruby 放入您自己主目录的沙箱中?请不要要求我们去其他网站并阅读他们的文档只是为了帮助您,因为链接腐烂,然后您的问题对其他人毫无用处。告诉我们您尝试了什么,遇到了什么错误或为什么它们不起作用。
  • rbenv env 的输出添加到您的问题中,为便于阅读而格式化。可在github.com/ianheggie/rbenv-env 获得。另外,rbenv whence gem 的输出是什么? gem 由 Ruby 安装,因此除非您使用的是非常旧的(并且不受支持的 Ruby 版本),否则应该安装它。
  • 您是否按照 rbenv 站点上的 rbenv 安装命令进行操作?如果没有,请删除 ~/.rbenv 目录,删除 Homebrew 安装的 rbenv 版本,然后按照the official documentation 重新安装 rbenv。当涉及到 rbenv 或 RVM 等快速移动的工具时,不要遵循其他人提出的指示。真正知道它是如何工作的人是你应该关注的人。 Homebrew 是一个很好的工具,用于缺少库等,但请遵循这些工具的 rbenv 和/或 RVM 文档。
  • --user-install('user' 前的两个减号)在 Sierra 上为我工作

标签: ruby osx-elcapitan rbenv


【解决方案1】:

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

出于同样的原因,还可以尝试 RVMrbenv 等沙盒环境。

【讨论】:

  • 我已经编辑了我的帖子 - 我有 brew、rbenv 但仍然出现权限错误。
【解决方案2】:

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

bundle install --path vendor/bundle

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

【讨论】:

    【解决方案3】:

    如果你不能在没有sudo 的情况下使用gem,听起来你没有正确初始化rbenv,因为垫片不可用。

    这些步骤来自the documentation。确认你做了他们所有

    将 ~/.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"
    

    【讨论】:

    • 我有上面的 - 确保我重做了这一切,打开了一个新的 tem 但仍然得到stub_specification.rb 错误
    • 这是我刚刚发现的一个同样问题的帖子 - 虽然stackoverflow.com/questions/29555478/… 不清楚如何解决它
    • 好的。删除我的.rbenv 目录并重新安装 ruby​​ 就可以了。我有一个带有奇怪权限的旧安装。
    • 在 PATH 中同时拥有 .rbenv/shims 和 .rbenv/bin 非常重要。
    • default install of rbenv 是安装 rbenv 的权威来源。按照这些指示,它应该会导致运行 rbenv 托管环境。 echo 'eval "$(rbenv init -)"' >> ~/.bash_profile 行将根据特定环境指定还需要什么,这是我机器上的 shims 路径。不要盲目地将 shims 添加到 PATH 中,因为可能会错过 rbenv init 所做的其他事情。
    【解决方案4】:

    正如其他人所提到的,有一些安全的方法可以在 Mac 上安装 Ruby gem。概括地说,这涉及六个步骤:

    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://stackoverflow.com/a/54873916/928191

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 2014-11-29
      • 2011-04-10
      • 2012-07-27
      • 2012-03-01
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多