Gem安装调试器错误

我在Mac OS 10.9.2上运行Rails v4.0.2并且我一切顺利。 我突然发现一个错误,当我尝试使用rails server时,gem丢失了。 我运行bundle install,这是输出:

 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 ' from extconf.rb:82:in `each' from extconf.rb:82:in `' 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 ' from extconf.rb:82:in `each' from extconf.rb:82:in `' 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 

我很困惑为什么这个错误突然出现了。 几个星期以来,我一直没有问题。 我尝试用rvm创建一个新的gemset,但仍然遇到同样的问题。 在搜索之后,我找到了首先更新依赖关系的建议,然后尝试bundle install但这并没有解决问题。

遗憾的是,调试器不支持Ruby 2.1.2。 相反,使用byebug gem 。 有关详细信息, 请参阅此讨论 。

调试器 gem不支持Ruby 2.x,您应该使用byebug 。 一旦Rails 4.2.0发布(或者你使用Rails 4.2.0rc版本), byebug将是Gemfile中包含的默认调试器,但是如果你使用的是早期版本的Rails,那么你需要进行更改在您的Gemfile中手动。

只需更换

 gem "debugger" 

 gem "byebug" 

在你的Gemfile中运行一个bundle install

更多背景

即使是调试器 gem的维护者也提出了这个建议。 GitHub上的调试器 gem的README有以下注释 :

  • 仅支持1.9.2和1.9.3。 对于2.Xruby,请考虑使用byebug 。

维护者无意修复此问题; 他关闭了问题调试器无法安装在ruby 2.X上不固定,解释调试器从未正确支持Ruby 2.X并且他现在推荐byebug

此外, 调试器的维护者自2014年6月以来没有推送提交甚至回复拉取请求。此时gem似乎是放弃软件。

Rails本身已采用byebug作为Ruby 2.X的官方调试器,截至4月份的pull请求 ,从Rails 4.2.0开始,当你运行rails new my_new_app_name时创建的rails new my_new_app_name将引用byebug而不是debugger用于Ruby 2.X用户。

TL;博士

调试器已经死了。 使用byebug

这个命令的怪异最终为我做了诀窍:

 gem install debugger-ruby_core_source && 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 rebuy_core_source的输出,我们发现它为Ruby的不同gem contents debugger-rebuy_core_source安装了一堆不同的头:

     $ 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] 

    要将其转换为debugger-ruby_core_source gem使用的ruby-2.0.0-p318格式,我们使用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 \ && 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 \ && ARCHFLAGS="-I -include vm_core.h" \ bundle install 

对于那些使用gem 'pry-debugger' gem 'pry-byebug' gem 'pry-debugger'只需将其更改为gem 'pry-byebug'中的Gemfile gem 'pry-byebug' Gemfile

不幸的是,没有答案解决了这个问题。 正如nickh之前所回答的,“调试器不支持Ruby 2.1.2”。

我发现了一个日本post,允许我安装这个gem,但我不承担任何责任,因为它不是正式版本。 这样做需要您自担风险:

 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

 **步骤1**
 gilchristiano @ rails-intro:〜/ workspace(master)$ rails --version
无法在任何来源中找到debugger-1.6.6
运行`bundle install`来安装缺少的gem。
 **第2步**
 gilchristiano @ rails-intro:〜/ workspace(master)$ debugger-1.6.6
 bash:debugger-1.6.6:找不到命令
 **第3步**
 gilchristiano @ rails-intro:〜/ workspace(master)$ gem install debugger -v'1.6.6'
构建原生扩展。 这可能需要一段时间......
成功安装了debugger-1.6.6
安装1个gem
 **第4步**
 gilchristiano @ rails-intro:〜/ workspace(master)$ bundle install