Ошибка при установке gem на Ubuntu 12.04 aws ec2

У меня есть экземпляр Ubuntu 12.04 в AWS EC2.
Я просто хочу использовать gem install rails.
Но он показывает это сообщение об ошибке.
Это вызвано разницей между gem env и sudo 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.

оболочка драгоценного камня:

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:

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/

person user3411589    schedule 13.03.2014    source источник


Ответы (2)


Это вызвано разницей между gem env и sudo gem env?

Вполне возможно, что rvm Ruby отличается от системной среды Ruby и зависит от того, где выполняется gem в соответствии с путем.

Однако похоже, что вы запускаете установку rvm Ruby gem от имени другого пользователя, являющегося владельцем /usr/local/rvm/gems и его подкаталогов, который должен быть установлен как rvmsudo

Под каким пользователем вы запускаете установку rvm gem?

Вы можете попробовать это:

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

person Rico    schedule 13.03.2014

rvm предназначен для использования без прав sudo или определенных/sudo прав. переустановить было бы более ценно. очистите текущую установку rvm rvmsudo rvm implode sudo rm -rf /etc/rvmrc /etc/profile.d/rvm.sh /usr/local/rvm , а затем закройте все консоли/баши/терминалы и снова войдите в систему с пользователем, с которым вы хотите использовать rvm, и установите его снова.

person The86Freak    schedule 22.07.2014