35

在我所有的 gem 安装中,我必须执行 sudo 吗?所以

须藤宝石安装导轨

会工作,而只有

宝石安装导轨

不管用。我该如何补救?

我已经安装了 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

编辑

我确实对整个事情做了 chown 但仍然收到错误 -

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
4

7 回答 7

31

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

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

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

于 2012-07-25T06:53:20.613 回答
19

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

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

如果可行,那么您可以将它放在 ~/.bashrc 中(有许多可能的文件可以放入,具体取决于您的系统)

于 2012-07-25T06:15:17.450 回答
12

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

  1. 将 GEM_HOME 添加到您的.bash_profile

例如,nano ~/.bash_profile并将export GEM_HOME=$HOME/.gem路径添加到您自己的主文件夹的位置

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

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

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

于 2017-07-27T10:10:29.607 回答
6

您应该安装Ruby 版本管理器。它将已安装的 rubies 和 gems 存储在您的主目录中,因此现在您不必使用sudo来安装 gems。除此之外,它还有很多功能。:)

于 2012-07-25T06:07:24.817 回答
2

苹果系统

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"
于 2019-03-21T02:58:43.313 回答
2

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

打开终端并输入:

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

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

export PATH="$PATH:$HOME/.gem/ruby/x.x.x/bin"
于 2018-09-09T16:28:29.957 回答
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_HOMEexport GEM_HOME="$HOME/.gems"

于 2018-12-16T12:43:56.063 回答