Почему «gem» и «sudo gem» имеют разные установочные каталоги? - PullRequest
4 голосов
/ 30 января 2012

Я помню, что использовал gem install rails для установки Rails, но сегодня, когда я хочу установить другой гем, набрав

gem install ruby-recaptcha

, он выходит из строя, говоря:

ВыУ меня нет разрешения на запись в ...

Тогда я обнаружил, что мои gem environment и sudo gem environment имеют разные результаты:

Для gem environment:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.0.1]
  - INSTALLATION DIRECTORY: /Users/hx/.rvm/gems/ruby-1.9.2-p290
  - RUBY EXECUTABLE: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/hx/.rvm/gems/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/hx/.rvm/gems/ruby-1.9.2-p290
     - /Users/hx/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :gempath => ["/Users/hx/.rvm/gems/ruby-1.9.2-p290"]
     - :sources => ["http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://rubygems.org/

Для sudo gem environment:

  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.0.1]
  - INSTALLATION DIRECTORY: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/hx/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1
     - /Users/hx/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :gempath => ["/Users/hx/.rvm/gems/ruby-1.9.2-p290"]
     - :sources => ["http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://rubygems.org/

Заметил, что каталог установки отличается.Поэтому, когда я использую gem, у меня нет разрешений (я не знаю, почему я внезапно потерял разрешение).Но когда я использую sudo gem, камень не установлен в нужном месте.Как я могу это исправить?

1 Ответ

4 голосов
/ 01 февраля 2012

RVM использует переменные окружения для настройки rubygems - команда gem, в основном, если у вас есть пользовательская установка (~/.rvm), вам не нужно использовать для вызова каких-либо команд с sudo, особенно gem - что еслисработало бы установить Rail как root пользователь в вашем домашнем каталоге, что лишит вас возможности управлять вашими файлами ... если у вас есть веские причины использовать sudo - используйте rvmsudo вместо этого - но на самом деле вы не должны иметьэто необходимо, особенно для установки гемов.

Если вы хотите, чтобы в вашей системе были доступны некоторые команды (например, gist), вы можете использовать rvm wrapper и связать сгенерированный двоичный файл в /usr/bin

чтобы исправить разрешения в вашем доме:

sudo chown $USER: ~/.rvm
sudo chmod u+rw ~/.rvm
...