В доступе отказано в ошибке с RVM - PullRequest
12 голосов
/ 29 ноября 2010

Я искал эту проблему и не смог найти похожие похожие вопросы.Пожалуйста, потерпите меня, если это повторяется.

Я следовал инструкциям на сайте RVM , чтобы установить RVM, и я установил рубины:

syed@rails:~$ rvm list

rvm rubies

   ruby-1.8.7-p302 [ i386 ]
=> ruby-1.9.2-p0 [ i386 ]

Как вы можете видетьЯ сделал ruby-1.9.2 по умолчанию.

Это мой каталог gem:

syed@rails:~$ rvm gemdir
/home/syed/.rvm/gems/ruby-1.9.2-p0

Теперь я попытался установить рельсы, и мне выдается следующая ошибка:

syed@rails:~$ gem install rails
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /home/syed/.gem/specs

Я даже сделал это безВнесение каких-либо изменений в ошибку:

syed@rails:~$ chown -R syed /home/syed/.rvm/

В настоящее время моя среда выглядит следующим образом:

syed@rails:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux]
  - INSTALLATION DIRECTORY: /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3
  - RUBY EXECUTABLE: /home/syed/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3
     - /home/syed/.rvm/gems/ruby-1.9.2-p0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Я не понимаю, почему она пытается установить гем в мой системный каталог гемовпуть

Ответы [ 7 ]

18 голосов
/ 06 декабря 2010

У меня была такая же проблема, и я решил ее, выполнив следующее:

sudo mkdir ~/.gem/specs
sudo chmod 777 ~/.gem/specs

Кажется, что RVM пытался создать эту папку "specs", но у него не было разрешений для этого.

4 голосов
/ 28 марта 2013

Мне действительно не нравится принятый ответ, это взлом, а не решение, подходящее для производства.Когда вы запускаете chmod 777, вы предоставляете кому-либо на машине полный доступ к этим папкам.

Гораздо лучше создать отдельный набор гемов для этого проекта, а затем убедиться, что вы владеете им с помощью chown.

rvm gemset create project
rvm use ruby-1.9.3-p394@project # May not be necessary

И в вашей папке gems, для случая выше "home / syed / .rvm / gems /" убедитесь, что новый созданный вами gemset принадлежит вам

cd home/syed/.rvm/gems/ && ls -la 

Если он не принадлежит вам, тогда выберите его для своего пользователя

sudo chown -R user:rvm gemset
3 голосов
/ 29 ноября 2010

Возможно, попробуйте также проверить разрешения "chown" для необходимых файлов / каталогов, чтобы узнать больше о вашем сообщении об ошибке.

Обычно я создаю gemset для различных приложений / проектов, поэтому я неПолучите смесь сотен различных драгоценных камней в одном месте через несколько недель / месяцев.Попробуйте это:

rvm use 1.9.2
rvm gemset create YOURGEMSETNAME
rvm gemset use YOURGEMSETNAME

или просто

rvm 1.9.2@YOURGEMSETNAME --create

Попробуйте установить ваши драгоценные камни после этого.Если вы хотите, чтобы драгоценные камни появлялись для каждого набора драгоценных камней для ruby ​​1.9.2, тогда переключитесь на набор драгоценных камней global и установите их там:

rvm 1.9.2@global
gem install rails3 # or whatever you wish
2 голосов
/ 20 ноября 2012

У меня была эта проблема, и я хотел записать свой ответ для потомков. Все каталоги в моем Ruby-специфичном каталоге RVM принадлежали пользователю root. Так что мне пришлось их всех отбить.

~/.rvm/gems/ruby-1.9.3-p286

drwxr-xr-x  22 root           staff   748 Nov 12 13:34 bin
drwxr-xr-x   2 root           staff    68 Nov 20 14:42 cache
drwxr-xr-x   2 root           staff    68 Nov  1 09:59 doc
drwxr-xr-x  47 root           staff  1598 Nov 12 13:34 gems

Я не знаю, нормально ли это, но после замены их на моего пользователя без полномочий root проблема исчезла.

2 голосов
/ 16 апреля 2012

Я решил это, наконец.Оказывается, мой брандмауэр блокировал 199.91.171.93.Когда я открыл доступ, я больше не получал Errno::EACCES сообщений.Я диагностировал это с помощью --verbose и увидел, что источник пытается обновить область $ HOME / .gem / specs / rubygems.org% 80 / quick / Marshal.4.8, но не смог просто потому, что трафик заблокирован.

1 голос
/ 09 августа 2012

Для тех, кто прибывает из Google: В Windows у меня была эта проблема, потому что в моем каталоге Program Files была установлена ​​более старая версия Ruby, для которой в новых версиях Windows существуют ограничения безопасности.Запустите ruby --version, чтобы убедиться, что оно соответствует ожиданиям.

1 голос
/ 29 ноября 2010

Как выглядит твой путь?Похоже, вы получаете системную версию gem вместо команды на основе rvm.

...