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

时间:2010-01-22 17:16:10

标签: ruby-on-rails ruby macos rubygems

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

将宝石安装在我的计算机上的不同目录中可能不太好,所以我应该以不同的方式设置宝石路径,并且在安装时应该总是使用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是空的。

8 个答案:

答案 0 :(得分:136)

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

相反,我建议你安装 RVM ,开始幸福生活,携带宝石家园和不同版本的Ruby都生活在一个屋檐下。

对于没有经验的人,来自the documentation

  

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

安装sudo的宝石比gem install更差的原因是因为它将所有用户的宝石安装为root。如果你是唯一一个使用这台机器的人,这可能会没问题,但如果你不是,那就可能造成奇怪。

如果您决定要放弃所有宝石并重新开始,那么以非root用户身份执行此操作会更容易,更安全。

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

此外,如果您可以使您的开发环境尽可能接近您的生产环境,那就太好了,而且在生产环境中,您最有可能以非root用户身份安装gem。

答案 1 :(得分:112)

您还可以在本地环境中安装宝石(不含sudo

gem install --user-install <gemname>

我建议您不要弄乱系统级配置,即使它是单用户计算机也是如此。

您可以通过gem environment查看gempath来查看宝石的去向。就我而言,它是“〜/ .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

答案 2 :(得分:32)

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

gem: --user-install

答案 3 :(得分:11)

如果你

  • 用sudo安装ruby gems
  • 想要安装没有sudo的宝石
  • 不想安装rvm / rbenv

将以下内容添加到.bash_profile

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

在终端或source ~/.bash_profile中打开一个新标签,您就可以了!

答案 4 :(得分:8)

相关(对于捆绑用户),如果您想要一个更轻松的替代RVM,将所有内容放在用户特定的知名目录中,我建议使用:

bundle install --path $HOME/.gem

如果你想将宝石安装到

的同一个地方
gem install --user-install GEMNAME

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

这将使gem list可以看到宝石,可以通过gem uninstall等卸载,而无需sudo访问权限。可以通过添加

将gem或bundler安装的runnable脚本放入您的路径中
$HOME/.gem/ruby/RUBYVERSION/bin

$PATHgem本身会在您执行gem install --user-install时设置它时告诉您。

答案 5 :(得分:6)

count

将安装您的宝石全球,即它将可供所有用户的上下文使用。

答案 6 :(得分:2)

您可以使用以下命令将Gems安装到Rails应用程序中的特定文件夹(示例供应商/)中

bundle install --path vendor

答案 7 :(得分:1)

在Mac上安装Ruby gem是造成混乱和沮丧的常见原因。不幸的是,大多数解决方案是不完整,过时的,并且提供了不好的建议。我很高兴这里接受的答案说不要使用sudo,这是您永远都不需要做的,尤其是如果您不了解它的作用时。当我几年前使用RVM时,我会在2020年推荐chruby

此处的其他一些答案提供了安装gem的替代选项,但是它们没有提及这些解决方案的局限性。所缺少的是各种选项的解释和比较,以及为什么您可能会选择其中一个选项。我试图涵盖最常见的情况 在我的definitive guide to installing Ruby gems on a Mac中。