web-dev-qa-db-fra.com

Erreur d'installation du débogueur Gem

J'exécute Rails v4.0.2 sur Mac OS 10.9.2 et tout s'est bien passé. Tout d'un coup, je reçois une erreur indiquant que des gemmes manquent lorsque j'essaie Rails server. Je lance l'installation de bundle et voici la sortie:

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.

Lorsque j'essaie d'exécuter gem install debugger -v '1.6.6' J'obtiens la sortie suivante:

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

Je suis très confus pourquoi cette erreur est survenue tout d'un coup. Je suis opérationnel sans problème depuis des semaines. J'ai essayé de créer un nouveau jeu de gemmes avec rvm et je rencontre toujours le même problème. Après avoir cherché, j'ai trouvé des recommandations pour mettre à jour les dépendances d'abord, puis essayez bundle install mais cela n'a pas résolu le problème.

25
apardes

Malheureusement, Ruby 2.1.2 n'est pas pris en charge par le débogueur. À la place, utilisez le bijou de bogue . Voir cette discussion pour plus de détails.

29
nickh

Ruby 2.x n'est pas pris en charge par le débogueur gem et vous devez utiliser byebug à la place. Une fois Rails 4.2.0 est publié (ou si vous utilisez les versions Rails 4.2.0rc)) byebug sera le débogueur par défaut inclus dans votre Gemfile, mais si vous utilisez une version antérieure de Rails alors vous devrez effectuer la modification manuellement dans votre Gemfile.

Il suffit de remplacer

gem "debugger"

avec

gem "byebug"

dans votre Gemfile et exécutez un bundle install.

Un peu plus de contexte

Même le responsable du débogueur gem fait cette recommandation. Le débogueur gem README sur GitHub a ce qui suit note :

  • Seuls 1.9.2 et 1.9.3 sont pris en charge. Pour les rubis 2.X, pensez à utiliser byebug .

Le mainteneur n'a pas l'intention de résoudre ce problème; il a fermé le problème le débogueur ne peut pas être installé sur Ruby 2.X unfixed , expliquant que le débogueur n'a jamais été correctement pris en charge Ruby 2.X et qu'il recommande désormais byebug .

De plus, le responsable du débogueur n'a pas poussé de commit ni même répondu à une demande de pull depuis juin 2014. Le joyau semble être un abandonware à ce stade.

Rails lui-même a adopté byebug comme débogueur officiel pour Ruby 2.X à partir de cette demande de tirage) en avril , et à partir de Rails 4.2.0 et plus le Gemfile créé lorsque vous exécutez Rails new my_new_app_name fera référence à byebug au lieu de debugger pour Ruby 2.X utilisateurs.

tl; dr

le débogueur est mort. Utilisez byebug .

24
Mark Amery

Cette monstruosité d'une commande a fini par faire l'affaire pour moi:

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

Mes excuses.

Décomposer:

  • Tout d'abord, installez les en-têtes Ruby.

    gem install debugger-Ruby_core_source
    
  • Maintenant, si cela réussit, nous voulons exécuter bundle install mais il doit être capable de trouver ces en-têtes Ruby. Grepping la sortie de gem contents debugger-rebuy_core_source, nous constatons qu'il installe un tas d'en-têtes différents pour différents niveaux de patch de 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
    ...
    
  • Quel est le niveau de patch actuel?

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

    Pour transformer cela en Ruby-2.0.0-p318 format utilisé par le debugger-Ruby_core_source gem, nous utilisons awk pour imprimer uniquement le deuxième champ de cette chaîne de version, et changeons p en -p:

    $ Ruby -v | awk '{sub(/p/, "-p", $2); print $2}'
    2.0.0-p481
    
  • Maintenant, nous exécutons bundle install, avec ARCHFLAGS défini pour ajouter le répertoire contenant les en-têtes Ruby au chemin de recherche du fichier inclus et précharger 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
    

    c'est à dire.,

    gem install debugger-Ruby_core_source \
      && ARCHFLAGS="-I<path-to-dir_containing_vm_core.h> -include vm_core.h" \
        bundle install
    
13
andrewdotn

Pour ceux qui utilisent gem 'pry-debugger' il suffit de le changer en gem 'pry-byebug' dans votre Gemfile.

6
valk

Malheureusement, aucune réponse n'a résolu ce problème. Comme répondu auparavant par nickh, "Ruby 2.1.2 n'est pas pris en charge par le débogueur".

J'ai trouvé une publication japonaise qui m'a permis d'installer ce bijou, mais je n'en prends aucune responsabilité, car ce n'est pas une version officielle. Faites-le à vos risques et périls:

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

Source: http://d.hatena.ne.jp/mabots/20140723/1406087504

4
carlosvini