Ошибка при установке отладчика: не удалось создать собственное расширение gem с ruby-1.9.3-p362
При попытке запустить пакет для нового проекта, я сталкиваюсь со следующей ошибкой:
Installing debugger (1.2.2) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
C:/Ruby193/bin/ruby.exe extconf.rb
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
Makefile creation failed
**************************************************************************
No source for ruby-1.9.3-p362 provided with debugger-ruby_core_source gem.
**************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby193/bin/ruby
--with-ruby-dir
--without-ruby-dir
--with-ruby-include
--without-ruby-include=${ruby-dir}/include
--with-ruby-lib
--without-ruby-lib=${ruby-dir}/lib
Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.2.2 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/debugger-1.2.2/ext/ruby_debug/gem_make.out
An error occured while installing debugger (1.2.2), and Bundler cannot continue.
Make sure that `gem install debugger -v '1.2.2'` succeeds before bundling.
Запуск gem install debugger -v '1.2.2'
дает те же результаты.
Я проверил содержимое файла mkmf.log и gem_make.out, и они не имеют никакого смысла, но при необходимости я опубликую их.
Почему это не работает?
Ответы
Ответ 1
Я столкнулся с той же проблемой. Я пробовал:
bundle update debugger
У моего Gemfile было следующее:
gem 'debugger'
И это сработало, мне не пришлось менять Gemfile. Вывод пакета показывает что-то вроде этого
...
Installing debugger-ruby_core_source (1.1.6)
Installing debugger-linecache (1.1.2) with native extensions
Installing debugger (1.1.4) with native extensions
...
Ответ 2
Решение проблемы состояло в том, чтобы просто установить версию debugger-ruby_core_source gem - aa разветвленную версию debugger-ruby_core_source по eiel на github.
После долгих проб и ошибок (с моей стороны) я просто
gem install debugger-ruby_core_source -v '1.1.6'
которые заставляют включить заголовки p362. Затем, когда я запустил bundle
, отладчик был успешно создан с родными расширениями, а пакет продолжал на нем веселье, и я тоже был.
Просто примечание, в то время как я использовал несколько раз, я пробовал несколько вещей и провел несколько часов, чтобы заставить это работать, прежде чем я действительно пришел к простому решению.
Ответ 3
Возможно, лучше использовать обновление пакета, отлично работало здесь.
$bundle update debugger-ruby_core_source
Предположим использовать обновление для всех камней отладчика:
$bundle update debugger
Ответ 4
Очевидно, что отладчик не поддерживается в ruby 2. * поэтому используйте byebug.
http://edgeguides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-byebug-gem
Ответ 5
Попытавшись какое-то время, я, наконец, сдался и заменил debugger
на byebug
.
Для использования с pry:
gem 'pry', group: [:development, :test]
gem 'pry-byebug', group: [:development, :test]
Затем вы можете сбросить инструкцию binding.pry
в любом месте, где хотите запустить отладчик.
Ответ 6
Просто наткнулся на это с помощью Ruby 2.0.0, установленного через RVM. Ни один из других решений не работал у меня.
RVM будет просто устанавливать с двоичными файлами, если они доступны, что быстрее, но отладчик также нуждается в источнике
rvm reinstall 2.0.0 --disable-binary
Ответ 7
если вы будете использовать rvm, убедитесь, что у вас есть соответствующая версия для соответствия debase-ruby_core_source ordebugger-ruby_core_source.
то есть.
в debase-ruby_core_source для ruby 2.0.0 поддерживают только p195, p247, p353, p451, p481, p576.
выше не поддерживается!
если ваша рубиновая версия не соответствует предоставленному источнику. вы не сможете это преодолеть.
(причина "Не удается найти исходную ошибку!" )
------------debase-ruby_core_source 0.6.0 vm_Core support list ----------------
../usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p0/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p195/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p247/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p353/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p451/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p481/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.0.0-p576/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.0-p0/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.1-p76/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.2-p95/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.1.3-p242/vm_core.h
./usr/local/rvm/rubies/ruby-2.0.0-p598/lib/ruby/gems/2.0.0/gems/debase-ruby_core_source-0.6.0/lib/debase/ruby_core_source/ruby-2.2.0-preview1/vm_core.h
Ответ 8
который работал у меня:
$ rvm use 2.0
или сделать его по умолчанию:
$ rvm use --default 2.0