Установка Gems без rvm, как root, с явной версией ruby

#ruby-on-rails #gem #environment #ruby-1.9.2 #env

#ruby-на-рельсах #gem #Окружающая среда #ruby-1.9.2 #env #ruby-on-rails

Вопрос:

Я решил избавиться от rvm, и у меня возникли проблемы с компиляцией gem с моей новой версией ruby 1.9.2. Для gem требуется 1.9.2, он у меня есть, но говорит, что он не может быть установлен без него, поэтому сообщения об ошибках не имеют смысла.

Как я могу явно указать gem для компиляции с указанной версией ruby?

 Gem::InstallError: linecache19 requires Ruby version >= 1.9.2.
An error occured while installing linecache19 (0.5.12), and Bundler cannot continue.
Make sure that `gem install linecache19 -v '0.5.12'` succeeds before bundling.
 apps2 ~/projects/sms/apps2/apps2_admin $ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.8.0]
 apps2 ~/projects/sms/apps2/apps2_admin $ which ruby
/usr/local/bin/ruby
  

Ответ №1:

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

Корень проблемы заключается в том, что в файле gem installer.rb переданная требуемая версия ruby из linecache19 равна 1.9.2, в то время как Gem.ruby_version имеет значение 1.9.2.dev.30909, а («1.9.2»> = «1.9.2.dev.30909») равно false.

итак, сначала убедитесь, что версия ruby — 1.9.2:

 ruby -v
  

затем вручную используйте —force для обхода проверки версии:

 gem install ruby_core_source
gem install linecache19 --force
  

если вы столкнулись с другой ошибкой, начинающейся со следующих строк:

 checking for vm_core.h... no
*** extconf.rb failed ***
  

Вы должны явно указать исходный путь на vm_core.h

В моем случае:

 $ which ruby
/Users/Reza/.rvm/rubies/ruby-1.9.2-rc2/bin/ruby
$ echo $rvm_path
/Users/Reza/.rvm/
  

итак, чтобы установить linecache19 :

 gem install ruby_core_source
gem install linecache19 --force -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-rc2/
  

у ruby-debug19 аналогичная проблема:

 gem install ruby-debug19 --force -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-rc2/
  

Вот и все!

Ответ №2:

У меня была такая же проблема (linecache19 зависает навсегда / на неопределенный срок) при использовании rbenv в OS X Lion. Я обнаружил, что решением было установить Ruby с опцией OpenSSL, например:

 rbenv install 1.9.2-p290 --with-openssl-dir=/usr/local
rbenv rehash
rbenv global 1.9.2-p290
  

Теперь вы можете запустить или связать это, и оно будет установлено нормально:

 gem install ruby-debug19
  

Надеюсь, это кому-то поможет.

Комментарии:

1. Мне удалось преодолеть сбой пакета. Спасибо!

Ответ №3:

Это то, что работало на Ubuntu:

У меня были те же проблемы, и я перепробовал так много вариантов, прежде чем наткнулся на это: http://beginrescueend.com/packages/openssl /

 $ rvm pkg install openssl
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr
  

Это устраняет проблему с linecache19 rubydebug-19 и openssl:

 *** extconf.rb failed ***
custom_require.rb:36:in `require': no such file to load -- openssl (LoadError)
  

затем вы можете сделать

 gem install ruby-debug19
  

Комментарии:

1. Будьте осторожны при публикации стандартных / дословных ответов на несколько вопросов, они, как правило, помечаются сообществом как «спам». Если вы делаете это, то это обычно означает, что вопросы являются дубликатами, поэтому отметьте их как таковые.