[英]'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
更好的是,将--user-install
放在你的 ~/.gemrc 文件中,这样你就不必每次都输入它
gem: --user-install
如果你
将以下内容添加到您的.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.