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

问题描述 投票:24回答:7

在我所有的宝石安装上,我必须做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

但是,当我使用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(没有sudo)重新安装了rvm。

但是,当我尝试安装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
ruby gem
7个回答
28
投票

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

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

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


16
投票

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

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

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


7
投票

对于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


6
投票

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


1
投票

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

打开终端并输入:

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

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

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

1
投票

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

不要忘记设置export PATH="$PATH:$HOME/.gem/bin"之前提到的路径。

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

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

$ sudo gem install rails

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

并设置变量GEM_HOMEexport GEM_HOME="$HOME/.gems"


1
投票

MacOS的

brew install ruby 

编辑~/.zshrc为zsh(对于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"
© www.soinside.com 2019 - 2024. All rights reserved.