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

运行“ sudo gem list --local ”和“ gem list --local ”给了我不同的结果。 我的gempath设置为我的主文件夹,只包含“ gem list --local ”的gem list --local

在我的计算机的不同目录中安装gem可能不太好,所以我应该设置不同的gempath,并且在安装某些东西时我应该总是使用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是空的。

相反,所有其他职位,我build议安装gem时不要使用sudo

相反,我build议你安装RVM,并开始愉快的生活与便携式gem家园和不同版本的Ruby都住在一个屋檐下。

对于外行,从文档 :

RVM是一个命令行工具,它使我们能够轻松地安装,pipe理和使用多个ruby环境和一套gem。

使用sudo安装gem的原因不仅仅是gem install ,因为它以root身份安装了所有用户的gem。 如果你是唯一使用机器的人,这可能没有问题,但如果你不是这样,会造成怪异。

如果你决定要把所有的gem都吹走,重新开始,非root用户可以更容易,更安全地做到这一点。

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

另外,如果可以使开发环境尽可能接近您的生产环境,并且在生产环境中,您很可能将gem作为非root用户安装。

你也可以在你的本地环境(没有sudo )中安装gem

 gem install --user-install <gemname> 

我build议,即使它是单用户计算机,也不要混淆系统级configuration。

你可以通过gemaths gemaths来查看gem的去向。 在我的情况下,它是“〜/ .gem / ruby​​ / 1.8”。

如果您需要将本地安装中的某些二进制文件添加到path中,则可以将如下内容添加到您的bashrc中:

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

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

更好的是,把~user.install放在你的〜/ .gemrc文件中,这样你就不必每次都input

 gem: --user-install 

相关的(对于打包者用户),如果你想要一个更轻的替代RVM的将所有东西放在用户特定的众所周知的目录中,我推荐使用:

 bundle install --path $HOME/.gem 

如果你想安装gem到相同的地方

 gem install --user-install GEMNAME 

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

这将使gem可见的gem list ,可卸载通过gem uninstall等,而无需sudo访问。 由gem或bundler安装的可运行脚本可以通过添加到您的path

 $HOME/.gem/ruby/RUBYVERSION/bin 

到你的$PATHgem本身告诉你,如果它没有设置,当你做gem install --user-install

如果你

  • 用sudo安装rubygem
  • 想要没有sudo安装gem
  • 不想安装rvm / rbenv

将以下内容添加到.bash_profile

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

在terminal或source ~/.bash_profile打开一个新的标签,你很好走!

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

 bundle install --path vendor 
 sudo gem install --no-user-install <gem-name> 

将在全球范围内安装你的gem,即它将适用于所有用户的上下文。