web-dev-qa-db-fra.com

Erreur lors de l'installation du débogueur: impossible de créer une extension native de gem avec Ruby-1.9.3-p362

En essayant de lancer bundle pour un nouveau projet, je rencontre l'erreur suivante:

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.

Exécuter gem install debugger -v '1.2.2' produit les mêmes résultats.

J'ai vérifié le contenu des fichiers mkmf.log et gem_make.out et cela n'a pas beaucoup de sens, mais si nécessaire, je les posterai.

Pourquoi ça ne marche pas?

24
erroric

La solution au problème consistait simplement à installer la gem debugger-Ruby_core_source - une version forkée de debugger-Ruby_core_source de eiel sur github .

Après beaucoup d'essais et d'erreurs (de ma part), j'ai simplement

gem install debugger-Ruby_core_source -v '1.1.6'

qui forcent l'inclusion des en-têtes p362. Ensuite, quand j’ai exécuté bundle, le débogueur a été construit avec succès avec les extensions natives, et le bundler a continué sur sa lancée, de même que moi.

Juste une note, alors que j’ai utilisé simplement plusieurs fois, j’ai essayé plusieurs choses et ai passé plusieurs heures à le faire fonctionner avant d’arriver à la solution simple.

16
erroric

Peut-être qu'il vaut mieux utiliser la mise à jour de paquet, a bien fonctionné ici. 

$ bundle update debugger-Ruby_core_source

Pensez à utiliser la mise à jour de tous les joyaux du débogueur:

$ débogueur de mise à jour de paquet

10
Rafael Sachetto

Apparemment, le débogueur n'est pas pris en charge dans Ruby 2. * donc utilisez plutôt byebug . http://edgeguides.rubyonrails.org/debugging_Rails_applications.html#debugging-with-the-byebug-gem

6
fenec

Après avoir essayé pendant un moment, j'ai finalement abandonné et remplacé debugger par byebug

À utiliser avec un levier:

gem 'pry', group: [:development, :test]
gem 'pry-byebug', group: [:development, :test]

Vous pouvez ensuite supprimer une instruction binding.pry où vous souhaitez démarrer le débogueur.

5
cevaris

Je viens juste de le rencontrer avec Ruby 2.0.0 installé via RVM. Aucune des autres solutions n'a fonctionné pour moi.

RVM installera simplement avec les fichiers binaires s’ils sont disponibles, ce qui est plus rapide, mais le débogueur a également besoin de la source

rvm reinstall 2.0.0 --disable-binary
4
chris finne

si vous voulez utiliser rvm, assurez-vous d'avoir la bonne version pour faire correspondre debase-Ruby_core_source oudebugger-Ruby_core_source. 

c'est-à-dire que dans debase-Ruby_core_source pour Ruby 2.0.0 ne prend en charge que p195, p247, p353, p451, p481, p576. ci-dessus n'est pas pris en charge!

si votre version de Ruby ne correspond pas à la source fournie. vous ne pourrez pas passer à travers . (qui cause "Vous ne trouvez pas l'erreur de source!") 

------------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
1
TC Juan

cela a fonctionné pour moi:

$ rvm use 2.0

ou pour le rendre par défaut:

$ rvm use --default 2.0
0
zombie_ghast