Ответ 1
У меня была такая же проблема, и я разрешил ее, выполнив следующие действия:
sudo mkdir ~/.gem/specs
sudo chmod 777 ~/.gem/specs
Кажется, что RVM пыталась создать эту папку "specs", но не имела прав для этого.
Я искал эту проблему и не мог найти соответствующие похожие вопросы. Пожалуйста, несите меня, если это повторяется.
Я выполнил инструкции в RVM для установки RVM, и у меня установлены рубины:
[email protected]:~$ rvm list
rvm rubies
ruby-1.8.7-p302 [ i386 ]
=> ruby-1.9.2-p0 [ i386 ]
Как вы можете видеть, я сделал ruby-1.9.2 своим дефолтом.
Это мой каталог gem:
[email protected]:~$ rvm gemdir
/home/syed/.rvm/gems/ruby-1.9.2-p0
Теперь я попытался установить рельсы, и у меня возникла следующая ошибка:
[email protected]:~$ gem install rails
ERROR: While executing gem ... (Errno::EACCES)
Permission denied - /home/syed/.gem/specs
Я даже сделал это без каких-либо различий в ошибке:
[email protected]:~$ chown -R syed /home/syed/.rvm/
В настоящее время моя среда выглядит следующим образом:
[email protected]:~$ 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/[email protected]
- RUBY EXECUTABLE: /home/syed/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
- EXECUTABLE DIRECTORY: /home/syed/.rvm/gems/[email protected]/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /home/syed/.rvm/gems/[email protected]
- /home/syed/.rvm/gems/[email protected]
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
Я не понимаю, почему он пытается установить gems в мой путь к каталогу gem системы?
У меня была такая же проблема, и я разрешил ее, выполнив следующие действия:
sudo mkdir ~/.gem/specs
sudo chmod 777 ~/.gem/specs
Кажется, что RVM пыталась создать эту папку "specs", но не имела прав для этого.
Мне действительно не нравится принятый ответ, его взлом - не решение, подходящее для производства. Когда вы chmod 777, вы предоставляете кому-либо на машине доступ к полному доступу к этим папкам.
Гораздо лучше создать индивидуальный гемсет для этого проекта, затем убедитесь, что вы владеете им с помощью chown.
rvm gemset create project
rvm use [email protected] # May not be necessary
И в папке с вашими драгоценными камнями для случая выше "home/syed/.rvm/gems/" убедитесь, что новый созданный вами gemset принадлежит вам
cd home/syed/.rvm/gems/ && ls -la
Если вы не являетесь владельцем этого файла, откройте его своему пользователю
sudo chown -R user:rvm gemset
Возможно, попробуйте также проверить разрешения "chown
" для необходимых файлов/каталогов, чтобы узнать больше о вашем сообщении об ошибке.
Обычно я создаю gemset для разных приложений/проектов, поэтому я не получаю смесь сотен разных драгоценных камней в одном месте через несколько недель/месяцев. Попробуйте следующее:
rvm use 1.9.2
rvm gemset create YOURGEMSETNAME
rvm gemset use YOURGEMSETNAME
или просто
rvm [email protected] --create
Попытайтесь установить свои драгоценные камни после этого. Если вы хотите, чтобы драгоценные камни появлялись для каждого gemset для ruby 1.9.2, чем переход на глобальный гемсет и установка там ваших драгоценных камней:
rvm [email protected]
gem install rails3 # or whatever you wish
Я решил это, наконец. Оказывается, мой брандмауэр блокировал 199.91.171.93. Когда я открыл доступ, я больше не получал сообщения Errno::EACCES
. Я диагностировал это с помощью --verbose, и я мог видеть, что источник пытался обновить область $HOME/.gem/specs/rubygems.org% 80/quick/Marshal.4.8, но не мог просто потому, что трафик был заблокирован.
У меня просто была эта проблема и я хотел записать свой ответ для потомков. Все каталоги в моем каталоге RVM, специфичном для Ruby, принадлежали 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, проблема исчезла.
Как выглядит ваш путь? Похоже, вы получаете системную версию gem вместо команды rvm.
Для тех, кто приехал из Google: в Windows у меня была эта проблема, потому что у меня была установлена более ранняя версия Ruby в моем каталоге Program Files
, в каких более новых версиях Windows есть ограничения безопасности. Запустите ruby --version
, чтобы убедиться, что он как ожидается.