'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
更好的是,把~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
到你的$PATH
。 gem
本身告诉你,如果它没有设置,当你做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,即它将适用于所有用户的上下文。