繁体   English   中英

'sudo gem install' 或 'gem install' 和 gem 位置

[英]'sudo gem install' or 'gem install' and gem locations

运行 ' sudo gem list --local ' 和 ' gem list --local ' 给我不同的结果。 我的 gem 路径设置为我的主文件夹,并且只包含来自“ gem list --local ”的gem list --local

在我的计算机上的不同目录中安装 gems 可能不太好,所以我应该设置不同的 gem 路径,并且在安装某些东西时我应该总是使用sudo吗?

my ~/.profile
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"

~/.bash_profile 为空。

与所有其他帖子相反,我建议在安装 gems 时不要使用sudo

相反,我建议您安装RVM并开始一个幸福的生活,便携式 gem 之家和不同版本的 Ruby 都生活在一个屋檐下。

对于初学者,来自文档

RVM 是一个命令行工具,它允许我们轻松安装、管理和使用多个 ruby​​ 环境和一组 gem。

使用sudo安装 gems 比只gem install更糟糕的原因是因为它以root身份为所有用户安装 gems。 如果您是唯一使用这台机器的人,这可能没问题,但如果您不是,则可能会导致怪异。

如果您决定要吹掉所有宝石并重新开始,那么以非 root 用户身份这样做会更容易、更安全。

如果您决定要使用RVM那么使用sudo会导致各种奇怪的情况,因为您通过RVM安装的每个 Ruby 版本都有自己的 GEM_HOME。

此外,如果您能让您的开发环境尽可能接近您的生产环境,那就太好了,并且在生产环境中,您很可能会以非 root 用户身份安装 gems。

您还可以在本地环境中安装 gems(不带sudo

gem install --user-install <gemname>

我建议这样做,这样即使是单用户计算机,也不会弄乱系统级配置。

您可以通过使用gem environment查看 gempath 来检查 gem 的去向。 就我而言,它是“~/.gem/ruby/1.8”。

如果您需要将本地安装的一些二进制文件添加到您的路径中,您可以向您的 bashrc 添加一些内容,例如:

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

(来自http://guides.rubygems.org/faqs/#user-install

更好的是,将--user-install放在你的 ~/.gemrc 文件中,这样你就不必每次都输入它

gem: --user-install

如果你

  • 使用 sudo 安装 ruby​​ gems
  • 想在没有 sudo 的情况下安装 gems
  • 不想安装 rvm/rbenv

将以下内容添加到您的.bash_profile

export GEM_HOME=/Users/‹your_user›/.gem
export PATH="$GEM_HOME/bin:$PATH"

在终端或source ~/.bash_profile打开一个新选项卡source ~/.bash_profile就可以了!

sudo gem install --no-user-install <gem-name>

全局安装您的 gem,即它可用于所有用户的上下文。

相关(对于 bundler 用户),如果你想要一个更轻的 RVM 替代品,它将把所有东西都放在一个用户特定的众所周知的目录中,我建议使用:

bundle install --path $HOME/.gem

如果您想将 gems 安装到相同的位置

gem install --user-install GEMNAME

将安装它们, .gem/ruby/RUBYVERSION在你的 homedir 中。 (请参阅关于此问题的其他评论--user-install 。)

这将使 gems 对gem list可见,可通过gem uninstall等,而无需sudo访问。 可以通过添加将 gem 或 bundler 安装的可运行脚本放入您的路径中

$HOME/.gem/ruby/RUBYVERSION/bin

到您的$PATH 如果在您执行gem install --user-install时未设置gem本身会告诉您这一点。

您可以使用以下命令将 gems 安装到 Rails 应用程序中的特定文件夹(例如 vendor/)中:

bundle install --path vendor

在 Mac 上安装 Ruby gems 是一个常见的困惑和挫折来源。 不幸的是,大多数解决方案都是不完整的、过时的,并且提供了糟糕的建议。 我很高兴这里接受的答案说不要使用sudo ,你永远不需要这样做,特别是如果你不明白它的作用。 虽然我多年前使用过 RVM,但我会在 2020 年推荐chruby

这里的其他一些答案提供了安装 gems 的替代选项,但他们没有提到这些解决方案的局限性。 缺少的是对各种选项的解释和比较,以及为什么您可能会选择一个而不是另一个。 我试图在我的在 Mac 上安装 Ruby gems 的权威指南中涵盖最常见的场景。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM