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

mur*_*a52 27 ruby gem

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

sudo 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
Run Code Online (Sandbox Code Playgroud)

但是,当我使用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
Run Code Online (Sandbox Code Playgroud)

编辑

我已经重新安装了rvm curl -L get.rvm.io | bash -s stable --auto(没有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
Run Code Online (Sandbox Code Playgroud)

编辑

我做了整件事,但仍然得到错误 -

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
Run Code Online (Sandbox Code Playgroud)

Ped*_*nto 29

使用chown整体.rvm.gem目录返回给您的用户.您可能sudo以前使用它并且它搞砸了权限.

sudo chown -R username:group ~/.rvm
sudo chown -R username:group ~/.gem
Run Code Online (Sandbox Code Playgroud)

当然,将用户名更改为您的用户名

  • 在您的主文件夹(甚至主文件夹本身)中的任何目录上执行 `ls -l`,您可能会发现。 (2认同)

Jos*_*eek 18

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

$ # assuming your gems are stored in ~/.gems
$ GEM_HOME="$HOME/.gems" ruby my_program.rb
Run Code Online (Sandbox Code Playgroud)

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

  • 要留下这个答案,因为它可能对其他人有帮助,但是因为你编辑它说你正在使用rvm,它再也没有意义了(rvm会为你管理这个变量). (2认同)
  • 如果你在短暂的机器中使用系统安装的Ruby(例如在Docker容器中)时不想使用`rvm`,那么`GEM_HOME`也是如此. (2认同)

eMa*_*ine 9

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

  1. 将GEM_HOME添加到您的 .bash_profile

例如,在路径到您自己的主文件夹的位置nano ~/.bash_profile添加导出GEM_HOME=/Users/Michael/.gem

  1. 将gem可执行文件添加到系统路径

同样在中.bash_profile,添加export PATH="$GEM_HOME/bin:$PATH"

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


Ser*_*sev 6

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