gem安装权限问题

qic*_*ren 83 ruby gem ruby-on-rails

qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.
Run Code Online (Sandbox Code Playgroud)

当前的登录用户是qichunren,而qichunre用户有.gem dir的写权限.我想知道为什么gem不能将文件安装到我家.gem dir中?为什么我的gem常见的第一个想要将文件安装到/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

mea*_*gar 160

尝试设置GEM_HOMEGEM_PATH~/.gem,

对于当前终端会话,只需键入:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem
Run Code Online (Sandbox Code Playgroud)

如果您希望在打开终端时设置这些,请将以上命令添加到您的~/.bashrc文件中.

有关设置自定义ruby环境的更全面的解决方案,请参阅Site5KB中的本教程,该教程描述了使用.gemrc文件.

  • 这是实际的正确答案.如果你不需要,不要去操作sudo安装东西. (9认同)
  • 请记住将您的 GEM_PATH 添加到全局 PATH。这就是我所做的:`PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0: /usr/lib/ruby/gems/2.1.0 导出路径 GEM_HOME GEM_PATH` (2认同)

yfe*_*lum 49

对于系统范围的Ruby安装,请成为root用户.例如:

$ sudo gem install hpricot
Run Code Online (Sandbox Code Playgroud)

但是,在许多情况下(包括开发中),现代方法是使用一种工具,使您可以轻松地将Ruby作为普通用户安装和使用.这样可以避免成为root用户.有一些这样的工具,我使用的是RVM.

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME
Run Code Online (Sandbox Code Playgroud)

  • 不要使用sudo,因为您将以root身份安装它们,并且在使用普通用户时无法访问它们.使用RVM和gemsets. (38认同)
  • 例如`rvm gem install hpricot` (4认同)
  • 您可能想要删除此答案.你会保留积分,并为人们带来很多麻烦. (3认同)

Max*_*Max 6

我通过1and1托管在共享服务器上收到此错误。我的解决方案是添加该--user-install选项,该选项只是为您的登录用户(在共享服务器环境中所需的全部)安装该选项;安装萨斯

gem install sass --user-install
Run Code Online (Sandbox Code Playgroud)