如何在没有sudo的情况下安装gem

时间:2012-07-25 06:05:28

标签: ruby gem

在我所有的宝石安装中,我必须做sudo?所以

  

sudo gem install rails

将起作用,而只有

  

gem install rails

不起作用。我该如何解决这个问题?

我安装了rvm -

murtaza@murtaza-dev:~$ which rvm
/home/murtaza/.rvm/bin/rvm

murtaza@murtaza-dev:~$ which gem
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem

但是当我使用gem进行任何操作时,我也会收到此警告 -

murtaza@murtaza-dev:~$ gem
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777

修改

我已经使用curl -L get.rvm.io | bash -s stable --auto重新安装了rvm(没有sudo)。

然而,当我尝试安装gem时,它会给我以下错误 -

murtaza@murtaza-dev:~$ gem install rails
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /home/murtaza/.gem/specs

修改

我在整个事情上做了但总是得到错误 -

murtaza@murtaza-dev:~$ sudo chown murtaza.murtaza -R ~/.rvm/*


 murtaza@murtaza-dev:~$ gem install rails
    /home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
    ERROR:  While executing gem ... (Errno::EACCES)
        Permission denied - /home/murtaza/.gem/specs

7 个答案:

答案 0 :(得分:28)

在整个chown.rvm目录中使用.gem返回给您的用户。您之前可能使用过sudo并且它搞砸了权限。

sudo chown -R username:group ~/.rvm
sudo chown -R username:group ~/.gem

当然,将用户名更改为您的用户名并分组到您的论坛

答案 1 :(得分:16)

当你在没有sudo的情况下安装它们时,Ruby不知道它们的安装位置。我不记得默认安装它们的位置,可能是〜/ .gems之类的东西。无论如何,你可以通过设置GEM_HOME环境变量告诉Ruby它们的安装位置。

$ # assuming your gems are stored in ~/.gems
$ GEM_HOME="$HOME/.gems" ruby my_program.rb

如果可行,那么您可以将它放在〜/ .bashrc中(根据您的系统,可能会有许多可能存在的文件)

答案 2 :(得分:6)

您应该安装Ruby Version Manager。它在您的家庭目录中存储已安装的红宝石和宝石,因此您现在不必使用sudo来安装宝石。除此之外,它还有更多功能。 :)

答案 3 :(得分:6)

对于Mac用户,这对我有用......

  1. 将GEM_HOME添加到.bash_profile
  2. 例如,nano ~/.bash_profile并添加导出GEM_HOME=/Users/Michael/.gem,其中路径是您自己的主文件夹

    1. 将gem可执行文件添加到系统路径
    2. 同样在.bash_profile中,添加export PATH="$GEM_HOME/bin:$PATH"

      来源:http://michaelehead.com/2016/02/06/installing-gems-without-sudo.html

答案 4 :(得分:1)

我通过以下方式解决了我的问题:(我有ubuntu 17.10)

打开终端并输入:

echo "gem: --user-install" >> ~/.gemrc

然后在.bashrc文件中添加ruby的bin路径

export PATH="$PATH:$HOME/.gem/ruby/x.x.x/bin"

答案 5 :(得分:1)

尝试gem install package --install-dir $HOME/.gem

别忘了像export PATH="$PATH:$HOME/.gem/bin"之前提到的那样设置路径。

您需要考虑的事情是更改PATH顺序,例如export PATH="$HOME/.gem/bin:$PATH"。例如,如果您尝试将Rails安装到OS X系统上的本地目录中,但是内置了可执行文件,则可能会发生这种情况。在这种情况下,如果您不更改路径顺序,您还将收到以下输出:

  

Rails当前未安装在该系统上。要获取最新版本,只需键入:

     

$ sudo gem安装导轨

     

然后您可以重新运行“ rails”命令。

然后将变量GEM_HOME设置为export GEM_HOME="$HOME/.gems"

答案 6 :(得分:1)

MacOS

brew install ruby 

为zsh编辑~/.zshrc(因为Bash可能类似于 ~/.bash_aliases

# By default, binaries installed by gem will be placed into:
# /usr/local/lib/ruby/gems/2.6.0/bin
export GEM_HOME="/usr/local/lib/ruby/gems/"
export PATH="$GEM_HOME/bin:$PATH"