在ubuntu 12.04 aws ec2上安装gem时出错

时间:2014-03-13 03:18:41

标签: ruby-on-rails ubuntu amazon-web-services amazon-ec2

我在AWS EC2中获得了一个Ubuntu 12.04实例 我只想要宝石安装导轨。
但它显示了此错误消息 这是由sudo gem env之间的差异gem env引起的吗? 除了rvm implode之外,还有什么方法可以解决这个问题吗? 使用rvmsudo的风险是什么?

Fetching: atomic-1.1.15.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/local/rvm/gems/ruby-1.9.3-p545@global directory.

gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 1.9.3 (2014-02-24 patchlevel 545) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-1.9.3-p545@global
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-1.9.3-p545/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-1.9.3-p545@global/bin
  - SPEC CACHE DIRECTORY: /home/ubuntu/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-1.9.3-p545@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/rvm/gems/ruby-1.9.3-p545@global/bin
     - /usr/local/rvm/rubies/ruby-1.9.3-p545/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/rvm/bin

sudo gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.8
     - /home/ubuntu/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-ri --no-rdoc"
  - REMOTE SOURCES:
     - http://rubygems.org/

2 个答案:

答案 0 :(得分:5)

rvm可以在没有sudo或特定/ sudo权限的情况下使用。 重新安装将不胜感激。 清理当前的rvm安装 rvmsudo rvm implode sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm 然后关闭所有控制台/ bashes / terminales并再次使用您要使用rvm的用户登录并重新安装。

答案 1 :(得分:3)

  

这是由sudo gem env之间的差异gem env引起的吗?

很可能,rvm Ruby是独立的,与系统Ruby环境不同,取决于根据路径执行gem的位置。

但是,看起来您正在以不同的用户身份运行rvm Ruby gem安装作为/usr/local/rvm/gems的所有者及其子目录,该子目录应该安装为rvmsudo

您运行rvm gem install的用户是什么?

你可以试试这个:

chown -R user-you-want-to-run-command-as.user-you-want-to-run-command-as /usr/local/rvm/gems

或者像你提到的那样rvmsudo。某些文件可能具有root所有权的风险,如果您想要更安全,可能不需要。

请注意rvmsudo不是推荐的方式,而是在本地目录中使用rvm。如果你想删除它,你可以这样做:

rvmsudo rvm implode
sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm

然后只用rvm

重新安装