удалить рубиновые камни из системы - PullRequest
0 голосов
/ 24 октября 2011
root@app1:~# gem -v
1.8.10

Я получаю 1.8.10, когда использую rvm. Но когда я использую sudo, я получаю:

root@app1:~# sudo gem -v
1.3.7

Теперь, когда я устанавливаю гем на другого пользователя, кроме root

test@app1:~$ gem install RedCloth
Fetching: RedCloth-4.2.8.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
Permission denied - /usr/local/rvm/gems/ree-1.8.7-2011.03/cache/RedCloth-4.2.8.gem

Где это идет не так?

Вот мой драгоценный камень, когда я не использую sudo

root@app1:~# gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ree-1.8.7-2011.03
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ree-1.8.7-2011.03/bin
- RUBYGEMS PLATFORMS:
- ruby
 - x86_64-linux
- GEM PATHS:
 - /usr/local/rvm/gems/ree-1.8.7-2011.03
 - /usr/local/rvm/gems/ree-1.8.7-2011.03@global
- GEM CONFIGURATION:
 - :update_sources => true
 - :verbose => true
 - :benchmark => false
 - :backtrace => false
 - :bulk_threshold => 1000
 - "gem" => "--no-rdoc --no-ri"
 - "install" => "--no-ri --no-rdoc --env-shebang"
 - :sources => ["http://gemcutter.org", "http://gems.rubyforge.org/",   "http://gems.github.com"]
 - "update" => "--no-ri --no-rdoc --env-shebang"
 - REMOTE SOURCES:
   - http://gemcutter.org
   - http://gems.rubyforge.org/
   - http://gems.github.com

Вот мой драгоценный камень, когда я использую sudo

root@app1:~# sudo gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
    - /var/lib/gems/1.8
    - /root/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-rdoc --no-ri"
     - :sources => ["http://gemcutter.org", "http://gems.rubyforge.org/", "http://gems.github.com"]
     - "install" => "--no-ri --no-rdoc --env-shebang"
     - "update" => "--no-ri --no-rdoc --env-shebang"
  - REMOTE SOURCES:
     - http://gemcutter.org
     - http://gems.rubyforge.org/
     - http://gems.github.com 

1 Ответ

2 голосов
/ 24 октября 2011

Здесь нужно отметить три вещи:

  1. RVM работает, поддерживая пару переменных среды.sudo сбрасывает большинство из них во время переключения пользователя в качестве меры безопасности, чтобы не дать злоумышленникам внедрить опасные переменные, такие как LD_PRELOAD, в контекст повышенного исполнения.Если вы хотите использовать sudo и хотите сохранить свою среду RVM в новой оболочке, используйте rvmsudo.
  2. Среда gem, которую вы видите как root, является системной настройкой по умолчанию.Вы получаете это, потому что, как объяснено в первом пункте, sudo не сохраняет переменные окружения RVM во время переключения пользователей.
  3. Ошибка при попытке установки гема, скорее всего, связана с тем, что у вас нет необходимых прав нанаписать в каталог RVM.Во время глобальной установки RVM создает группу с именем rvm и гарантирует, что все ее члены могут писать в каталог RVm, который требуется для установки рубинов, создания наборов гемов и установки гемов.Убедитесь, что ваш пользователь находится в этой группе.Или вы можете просто использовать rvmsudo ...
...