ruby-on-rails “sudo gem安装”或“gem安装”以及gem位置

nlejzf6q  于 2023-01-27  发布在  Ruby
关注(0)|答案(8)|浏览(788)

运行“sudo gem list --local”和“gem list --local”给予了不同的结果。我的gem路径设置为我的主文件夹,只包含“gem list --local”中的gem。
将gem安装在计算机上的不同目录中可能不太好,所以我是否应该设置不同的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为空。

bjp0bcyl

bjp0bcyl1#

您可以使用以下命令在本地环境(没有sudo)中安装gem

gem install --user-install <gemname>

我建议这样做,这样即使是单用户计算机也不会弄乱系统级配置。
你可以用gem environment来查看宝石的路径,在我的例子中是“~/.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

(from http://guides.rubygems.org/faqs/#user-install)

ui7jx7zq

ui7jx7zq2#

与所有其他帖子相反,我建议在安装gems时不要使用sudo
相反,我建议您安装**RVM**,并开始与便携式宝石家园和不同版本的Ruby所有生活在一个屋檐下的幸福生活。
对于新手,从the documentation
RVM是一个命令行工具,它允许我们轻松地安装、管理和使用多个ruby环境和gem集。
使用sudo安装gem比只使用gem install安装gem更糟糕的原因是,它会将 * 所有用户 * 的gem安装为root。如果您是唯一使用机器的人,这可能没问题,但如果您不是,这可能会导致奇怪。
如果你决定要吹走你所有的宝石,并重新开始它更容易,更安全,这样做作为一个非根用户。
如果您决定使用RVM,那么使用sudo将导致各种各样的问题,因为通过RVM安装的每个Ruby版本都有自己的GEM_HOME。
此外,如果您可以使开发环境尽可能接近生产环境,并且在生产环境中您很可能以非root用户身份安装gem,那就太好了。

fhity93d

fhity93d3#

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

gem: --user-install
fcy6dtqo

fcy6dtqo4#

以防你

  • 用sudo安装Ruby
  • 我想安装gem而不使用sudo
    • 不想安装rvm/rbenv*

将以下内容添加到您的.bash_profile

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

在Terminal OR source ~/.bash_profile中打开一个新选项卡,您就可以开始了!

ej83mcc0

ej83mcc05#

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

全局安装您的gem,即它将可用于所有用户的上下文。

7dl7o3gd

7dl7o3gd6#

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

bundle install --path $HOME/.gem

如果你想安装gem到同一个地方

gem install --user-install GEMNAME

我将安装它们,.gem/ruby/RUBYVERSION在你的主目录中。(参见关于--user-install的其他评论。)
这将使gem对gem list可见,可通过gem uninstall卸载,等等,而无需sudo访问。通过gem或bundler安装的可运行脚本可以通过添加以下命令放在路径中

$HOME/.gem/ruby/RUBYVERSION/bin

$PATH。如果在执行gem install --user-install时没有设置,gem本身会告诉您这一点。

0qx6xfy6

0qx6xfy67#

您可以使用以下命令将gem安装到Rails应用中的特定文件夹(例如vendor/):

bundle install --path vendor
flvtvl50

flvtvl508#

在Mac上安装Ruby gems是一个常见的困惑和挫折。不幸的是,大多数解决方案都是不完整的,过时的,提供了糟糕的建议。我很高兴这里的答案是不要使用sudo,你永远不需要这样做,特别是如果你不知道它是做什么的。虽然我几年前使用RVM,我会推荐在2020年使用chruby
这里的其他一些答案提供了安装gem的替代方案,但是他们没有提到这些解决方案的局限性。缺少的是对各种选项的解释和比较,以及为什么您可能会选择一个而不是另一个。我已经尝试在我的definitive guide to installing Ruby gems on a Mac中涵盖了最常见的场景。

相关问题