Ошибка отладчика установки Gem

#ruby-on-rails #ruby #gem #rvm

#ruby-on-rails #ruby #rubygems #rvm

Вопрос:

Я использую Rails версии 4.0.2 на Mac OS 10.9.2, и у меня все прошло гладко. Внезапно я получаю сообщение об ошибке, в котором говорится, что драгоценные камни отсутствуют при попытке rails server . Я запускаю установку пакета, и это результат:

 Fetching gem metadata from https://rubygems.org/.......
Fetching additional metadata from https://rubygems.org/..
Using rake 10.1.1
Using i18n 0.6.9
Using minitest 4.7.5
Using multi_json 1.9.0
Using atomic 1.1.16
Using thread_safe 0.2.0
Using tzinfo 0.3.39
Using activesupport 4.0.2
Using builder 3.1.4
Using erubis 2.7.0
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.0.2
Using mime-types 1.25.1
Using polyglot 0.3.4
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.0.2
Using activemodel 4.0.2
Using activerecord-deprecated_finders 1.0.3
Using arel 4.0.2
Using activerecord 4.0.2
Using encryptor 1.3.0
Using attr_encrypted 1.3.2
Using awesome_print 1.2.0
Using bcrypt 3.1.7
Using bcrypt-ruby 3.1.5
Using net-ssh 2.8.0
Using net-scp 1.1.2
Using tins 1.0.0
Using term-ansicolor 1.3.0
Using sshkit 1.3.0
Using capistrano 3.1.0
Using capistrano-bundler 1.1.2
Using capistrano-rails 1.1.1
Using climate_control 0.0.3
Using cocaine 0.5.3
Using coderay 1.1.0
Using coffee-script-source 1.7.0
Using execjs 2.0.2
Using coffee-script 2.2.0
Using thor 0.18.1
Using railties 4.0.2
Using coffee-rails 4.0.1
Using columnize 0.3.6
Using currencies 0.4.2
Using countries 0.9.3
Using debugger-linecache 1.2.0
Using debugger-ruby_core_source 1.3.2

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb 
*** 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=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT)
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp'
    from extconf.rb:83:in `block in <main>'
    from extconf.rb:82:in `each'
    from extconf.rb:82:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/gems/debugger-1.6.6 for inspection.
Results logged to /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out
An error occurred while installing debugger (1.6.6), and Bundler cannot continue.
Make sure that `gem install debugger -v '1.6.6'` succeeds before bundling.
  

Когда я пытаюсь запустить gem install debugger -v '1.6.6' , я получаю следующий вывод:

 Building native extensions.  This could take a while...
ERROR:  Error installing debugger:
    ERROR: Failed to build gem native extension.

    /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb
*** 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=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT)
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
    from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp'
    from extconf.rb:83:in `block in <main>'
    from extconf.rb:82:in `each'
    from extconf.rb:82:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/gems/debugger-1.6.6 for inspection.
Results logged to /Users/aaronpardes/.rvm/gems/ruby-2.1.2@ocx/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out
  

Я очень смущен, почему эта ошибка возникла внезапно. Я работал и работал без проблем в течение нескольких недель. Я попытался создать новый gemset с помощью rvm и все еще сталкиваюсь с той же проблемой. После поиска я нашел рекомендации сначала обновить зависимости, а затем попробовать bundle install , но это не решило проблему.

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

1. вы пробовали добавлять sudo в gem install debugger -v '1.6.6' ?

2. Недавно я столкнулся с этой проблемой. отладчик официально не поддерживает Ruby 2.x . См., Например, эту проблему (многие другие отправлены). Попробуйте вместо этого использовать byebug .

Ответ №1:

К сожалению, Ruby 2.1.2 не поддерживается debugger. Вместо этого используйте драгоценный камень byebug. Смотрите Это обсуждение для получения более подробной информации.

Ответ №2:

Ruby 2.x не поддерживается драгоценным камнем отладчика, и вместо этого вы должны использовать byebug. После выпуска Rails 4.2.0 (или если вы используете Rails версии 4.2.0rc) byebug будет отладчиком по умолчанию, включенным в ваш Gemfile, но если вы используете более раннюю версию Rails, вам нужно будет внести изменения вручную в свой Gemfile.

Просто замените

 gem "debugger"
  

с

 gem "byebug"
  

в вашем Gemfile и запустите bundle install .

Еще немного предыстории

Даже разработчик драгоценного камня отладчика делает эту рекомендацию. README драгоценного камня отладчика на GitHub содержит следующее примечание:

  • Поддерживаются только версии 1.9.2 и 1.9.3. Для 2.X rubies рассмотрите возможность использования byebug.

Сопровождающий не намерен это исправлять; он закрыл проблему debugger не может быть установлен на ruby 2.X без исправления, объяснив, что debugger никогда должным образом не поддерживал Ruby 2.X и что теперь он рекомендует byebug.

Кроме того, сопровождающий debugger не выполнял коммит и даже не отвечал на запрос на извлечение с июня 2014 года. На данный момент gem, похоже, заброшен.

Сама система Rails приняла byebug в качестве официального отладчика для Ruby 2.X с момента этого запроса на извлечение в апреле, и начиная с Rails 4.2.0, файл Gemfile, созданный при запуске rails new my_new_app_name , будет ссылаться byebug вместо debugger для пользователей Ruby 2.X .

tl; dr

отладчик мертв. Используйте byebug.

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

1. если вы пришли сюда из-за jazz_hands , jazz_fingers это лекарство. 🙂

Ответ №3:

Эта чудовищная команда в конечном итоге сделала свое дело для меня:

 gem install debugger-ruby_core_source amp;amp; ARCHFLAGS="-I$(dirname -- "$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") -include vm_core.h" bundle install
  

Мои извинения.

Разбить его:

  • Сначала установите заголовки Ruby.

     gem install debugger-ruby_core_source
      
  • Теперь, если это удастся, мы хотим запустить bundle install , но он должен иметь возможность находить эти заголовки Ruby. Просматривая выходные gem contents debugger-rebuy_core_source данные, мы обнаруживаем, что он устанавливает кучу разных заголовков для разных уровней исправлений Ruby:

     $ gem contents debugger-ruby_core_source | grep vm_core.h
    /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p290/vm_core.h
    /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p318/vm_core.h
    /Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p320/vm_core.h
    ...
      
  • Каков текущий уровень исправления?

     $ ruby -v
    ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
      

    Чтобы преобразовать это в ruby-2.0.0-p318 формат, используемый debugger-ruby_core_source gem, мы используем awk для печати только второе поле этой строки версии и меняем p на -p :

     $ ruby -v | awk '{sub(/p/, "-p", $2); print $2}'
    2.0.0-p481
      
  • Теперь мы запускаем bundle install , ARCHFLAGS установив, чтобы добавить каталог, содержащий заголовки ruby, в путь поиска включаемого файла и предварительно загрузить vm_core.h :

     gem install debugger-ruby_core_source 
      amp;amp; ARCHFLAGS="-I$(dirname -- 
        "$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") 
        -include vm_core.h" 
    bundle install
      

    т.е.,

     gem install debugger-ruby_core_source 
      amp;amp; ARCHFLAGS="-I<path-to-dir_containing_vm_core.h> -include vm_core.h" 
        bundle install
      

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

1. Еще не пробовал использовать отладчик, но эта команда установила драгоценный камень!

2. Не сработало: ERROR: Can't find ruby library file or shared library debugger/ruby_core_source/ruby-2.0.0-p647/vm_core.h

Ответ №4:

Для тех, кто использует gem 'pry-debugger' , просто измените его на gem 'pry-byebug' в вашем Gemfile .

Ответ №5:

К сожалению, ответ не решил эту проблему. Как уже отвечал nickh, «Ruby 2.1.2 не поддерживается отладчиком».

Я нашел японское сообщение, которое позволило мне установить этот драгоценный камень, но я не несу за это никакой ответственности, поскольку это не официальный релиз. Делайте это на свой страх и риск:

 git clone https://github.com/mekishizufu/debugger.git
cd debugger
git checkout ca451a9bdf
gem build debugger.gemspec
gem install debugger-1.6.6.gem
  

Источник: http://d.hatena.ne.jp/mabots/20140723/1406087504

Ответ №6:

** Шаг 1**
gilchristiano@rails-вступление:~/workspace (master) $ rails --version
Не удалось найти debugger-1.6.6 ни в одном из источников
Запустите "bundle install", чтобы установить недостающие драгоценные камни.
** Шаг 2**
gilchristiano@rails-вступление: ~/workspace (master) $ debugger-1.6.6
bash: debugger-1.6.6: команда не найдена
** Шаг 3**
gilchristiano@rails-вступление: ~/workspace (master) $ gem установить отладчик -v '1.6.6'
Создание собственных расширений. Это может занять некоторое время...
Успешно установленный отладчик -1.6.6
установлен 1 gem
** Шаг 4**
gilchristiano@rails-введение: ~/ workspace (master) $ установка пакета