2010-01-22 95 views
109

运行'sudo gem list --local'和'gem list --local'给了我不同的结果。我的宝石路径设置为我的主文件夹,并且只包含'gem list --local'中的宝石。'sudo gem install'或'gem install'和宝石位置

在我的电脑上安装不同的目录可能不太好,所以我应该设置不同的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为空。

+0

我认为对于那些必须使用需要root权限的gem的人来说,这是一个有效的问题。 – Kelly 2011-08-17 14:37:27

+0

相关:http://stackoverflow.com/questions/21141584/rails-is-not-using-my-global-ruby-version。我使用rbenv来管理Ruby版本,并遇到了一个问题,因为我使用'sudo gem install rails'而不是'gem install rails'。 – Dennis 2014-01-15 17:04:49

+3

“我认为对于那些必须使用需要root权限的gem的人来说,这是一个有效的问题。”我认为任何需要root权限的gem,无论是安装还是运行,都是非常可疑的。宝石应该能够在沙箱中运行并且以用户的权限运行。 – 2014-07-31 18:47:35

回答

129

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

相反,我建议您安装RVM,并开始了幸福的生活便携式宝石家园和不同版本的Ruby一个屋檐下的所有活。

对于外行来说,从the documentation

RVM是一个命令行工具,它可以让我们轻松地安装,管理和使用多个Ruby环境和套宝石的工作。

之所以与sudo安装宝石不仅仅是gem install更糟糕的是,因为它安装的宝石所有用户root。如果你是唯一使用机器的人,这可能没什么问题,但如果你不是这样,可能会造成怪异。

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

如果决定要使用RVM然后使用sudo会引起各种古怪的,因为你通过RVM安装Ruby的每一个版本都有自己GEM_HOME。

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

+11

对于rvm建议+1,但是-1对于使用sudo替代可能性的混淆谴责 – tfwright 2010-01-22 18:13:08

+0

这实际上并没有让人困惑。 http://rvm.beginrescueend.com/gems/ – jonnii 2010-01-22 18:22:14

+0

@floyd,更新了帖子,更多的理由不使用sudo。 – jonnii 2010-01-22 18:29:37

93

您还可以

gem install --user-install <gemname> 

安装在您的本地环境的宝石(不sudo)我建议让你不惹即使它是一个单用户计算机系统级的配置。

你可以用gem environment查看gempaths来查看宝石的位置。在我的情况下,它是“〜/ .gem/ruby​​/1.8”。

如果您需要添加到您的路径本地安装一些二进制文件,你可以添加一些你的.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

+16

+1,而不是上面的“另一个配置工具”解决方案,RBENV/RVM。 – jjpe 2014-11-11 14:23:15

+0

我正在创建一个gem,根据手册我必须执行'rake install'并修复sudo isse,我不得不手动修补'/Library/Ruby/Gems/2.0.0/gems/bundler-1.7.3/lib/bundler/gem_helper.rb'在那里添加'--user-install'。无法找到更好的解决方案,因为看起来像'rake install'不接受其他参数。 – Nakilon 2015-03-09 01:48:14

+0

我对第一个命令感到非常激动。我一直在试图安装宝石,一直有问题,因为我没有sudo权限。该命令工作! – 2015-12-15 16:16:52

2

您可以安装宝石到特定文件夹(例如,在你的Rails应用程序供应商/)使用:

bundle install --path vendor 
+0

这个。现在,唯一需要sudo才能安装软件的程序是您的软件包管理器。 – tjbp 2016-07-22 09:49:36

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

将全球安装您的宝石,即它将适用于所有用户的情况。

+0

它也可以覆盖供应商安装的gem,该操作系统可能期望将其设置为特定版本。这可能会破坏依赖它的代码。 – 2015-11-06 16:19:54

7

相关(对于捆绑用户),如果你想RVM打火机替代它会把一切都在用户特定的众所周知的目录,我建议使用:

bundle install --path $HOME/.gem 

,如果你想安装宝石

gem install --user-install GEMNAME 

将在您的homedir中安装它们,.gem/ruby/RUBYVERSION。 (见这个问题有关--user-install其它评论。)

这将使宝石通过gem uninstall等可见gem list,卸载的,而无需sudo访问。由宝石或捆绑安装Runnable的脚本可以通过添加

$HOME/.gem/ruby/RUBYVERSION/bin 

$PATH被放入你的路径。 gem本身告诉你,如果它没有设置,当你做​​。

26

更重要的是,把--user-install你的〜/ .gemrc文件,这样你就不必每次都

gem: --user-install 
5

如果你

  • 安装红宝石宝石使用sudo
  • 键入它
  • 想要安装宝石没有sudo
  • 不想安装rvm/rbenv

以下内容添加到您的.bash_profile

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

公开赛在终端或source ~/.bash_profile一个新的标签,你是好去!

+2

对于不使用Ruby,Rails,Rake以及其他任何Ruby Devs使用/想要使用此解决方案的人来说,要比使用rvm容易得多。我真的不在乎有不同的ruby版本,我只是想运行一些shell程序作为宝石分发。谢谢! – 2016-12-14 14:46:13