2010-11-12 30 views
3

Je suis actuellement en train d'exécuter Ruby 1.9.2p0 sur un ordinateur Windows XP 32 bits. Depuis que nous avons mis à niveau vers Ruby 1.9, je n'arrive pas du tout à faire du débogage. On m'a dit que vous aviez besoin de la nouvelle gemme ruby-debug19 pour faire fonctionner les choses. Le problème est que le proxy de ma société empêche le gestionnaire de dépendances gem de connecter des référentiels externes. C'est bon, je vais juste télécharger la gemme moi-même et l'installer localement. Les résultats:Installation de ruby-debug19 localement

ERROR: Error installing ruby-debug19-0.11.6.gem: 
    ERROR: Failed to build gem native extension. 

C:/Ruby192/bin/ruby.exe extconf.rb --with-ruby-include=C:\Ruby192\include 
checking for vm_core.h... no 
checking for vm_core.h... no 
*** 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:/Ruby192/bin/ruby 
    --with-ruby-dir 
    --without-ruby-dir 
    --with-ruby-include=${ruby-dir}/include 
    --with-ruby-lib 
    --without-ruby-lib=${ruby-dir}/lib 
C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in `initialize': A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. - connect(2) (Errno::ETIMEDOUT) 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in `open' 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in `block in connect' 
    from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:44:in `timeout' 
    from C:/Ruby192/lib/ruby/1.9.1/timeout.rb:87:in `timeout' 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:644:in `connect' 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:637:in `do_start' 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:626:in `start' 
    from C:/Ruby192/lib/ruby/1.9.1/net/http.rb:1160:in `request' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/contrib/uri_ext.rb:239:in `block in read' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/contrib/uri_ext.rb:286:in `connect' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/contrib/uri_ext.rb:234:in `read' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/contrib/uri_ext.rb:128:in `download' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby_core_source.rb:55:in `block in create_makefile_with_core' 
    from C:/Ruby192/lib/ruby/1.9.1/tempfile.rb:320:in `open' 
    from C:/Ruby192/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby_core_source.rb:51:in `create_makefile_with_core' 
    from extconf.rb:20:in `<main>' 
Requesting http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz 


Gem files will remain installed in C:/Ruby192/lib/ruby/gems/1.9.1/gems/linecache19-0.5.11 for inspection. 
Results logged to C:/Ruby192/lib/ruby/gems/1.9.1/gems/linecache19-0.5.11/ext/trace_nums/gem_make.out 

Peut-être que je fais des hypothèses déraisonnables que je suis assez nouveau pour Ruby, mais il ne ressemble le script d'installation tente de se connecter un référentiel externe pour saisir quelque chose. Si c'est le cas, c'est absurde, pourquoi est-ce que j'installerais localement une gemme si j'étais capable de le faire avec le gestionnaire automatiquement? Est-ce que quelqu'un sait d'une façon que je peux installer un débogueur d'une manière purement locale, hors ligne? J'apprécie toute aide.

Répondre

1

ruby-debug pour Ruby 1.9 utilise certaines caractéristiques de Ruby 1.9 qui est pas exposée dans les en-têtes normales (internes)

À cause de cela, ruby-debug tente de télécharger un paquet source qui correspond à votre version Ruby et extrayez ces en-têtes pendant la phase de compilation. Je suis d'accord que c'est absurde, mais comme il utilise certaines fonctionnalités non documentées des en-têtes internes Ruby, il n'y a aucun moyen de contourner.

Ceci est déclenché par gem ruby_core_source, que vous pouvez vérifier son code source here

Je vous recommande d'utiliser votre navigateur pour télécharger la patchlevel exacte de votre version de Ruby (indiqué dans la sortie que vous avez fourni ci-dessus) et en regardant les actions ruby_core_source, extraire les fichiers d'en-têtes aux endroits indiqués, voir line 38 of ruby_core_source.rb

0

Gem est compatible avec les proxies. Vous pourriez jouer avec ces deux paramètres:

 
     --source URL     Use URL as the remote source for gems 
    -p, --[no-]http-proxy [URL]  Use HTTP proxy for remote operations 
8

J'ai eu exactement le même problème, et je seconde Luis Lavena - copie simplement tous * .h et * les fichiers .inc de vos sources de rubis au répertoire de cette commande imprime:

ruby -rmkmf -e 'puts Config::CONFIG["rubyhdrdir"] + "/" + "ruby-" + RUBY_VERSION.to_s + "-p" + RUBY_PATCHLEVEL.to_s' 

Ensuite, le ruby_core_source va les trouver et continuer à installer.

+0

Nice! Toujours en train de travailler un an plus tard! –

+0

aidez-moi s'il vous plaît ... je ne trouve pas les fichiers * .inc dans mon répertoire ruby ​​:-( –

+0

Est-ce que votre répertoire ruby ​​extrait du dépôt source, par exemple http://svn.ruby-lang.org/repos/ruby/ branches/ruby_1_9_2? – Roman

3

J'ai eu les mêmes problèmes avant, bien que je ne suis pas derrière un proxy. Peut-être que cette solution va aider. La gemme ruby-debug19 dépend de linecache19 et ruby-debug-base19 (et d'autres comme Luis mentionné). Pas sûr de ce dernier, mais le premier ne vient pas avec des binaires pour les fenêtres qui étaient la source de mes problèmes. Pour une installation locale correcte, vous devez télécharger les gemmes dans un répertoire, puis exécuter gem install -l, comme vous l'avez probablement fait. Toutes les gemmes nécessaires peuvent être téléchargées à partir de here. Comme linecache19 n'est pas livré avec les binaires win32, il va essayer de "construire des extensions natives" en compilant le code source. Cela échouera sur la plupart des ordinateurs Windows, sauf si vous avez un compilateur VC6, ou bien avez le dev-kit installé en suivant this link. Ce paquet vous oblige à installer le rubis en utilisant le ruby installer for windows. Une fois que le dev-kit est installé, vous ne devriez pas avoir les échecs sur "construire des extensions natives".

Vous pouvez lire un bel aperçu court here.

Hope this helps ..

1

Si votre utilisation de RVM,

vous pourriez envisager d'avoir un oeil à l'adresse suivante: - http://isitruby19.com/linecache19.

travaillé pour moi ..

En outre,

à un stade, je devais même télécharger manuellement les pierres précieuses et utiliser gem install avec la commande « -l » pour faire avancer les choses de travail .. Le commandes pour le même sont ..

[email protected]:~/Downloads/Diaspora_new_gems/mar10$ gem install ruby-debug19-0.11.6.gem -l -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-p180/ 
Building native extensions. This could take a while... 
Successfully installed linecache19-0.5.12 
Successfully installed ruby-debug19-0.11.6 
2 gems installed 
Installing ri documentation for linecache19-0.5.12... 
Installing ri documentation for ruby-debug19-0.11.6... 
Installing RDoc documentation for linecache19-0.5.12... 
Installing RDoc documentation for ruby-debug19-0.11.6... 
[email protected]:~/Downloads/Diaspora_new_gems/mar10$ ls 

[email protected]:~/Downloads/Diaspora_new_gems/mar10$ gem install ruby-debug-base19-0.11.25.gem -l -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-p180/. 
Building native extensions. This could take a while... 
Successfully installed ruby-debug-base19-0.11.25 
1 gem installed 
Installing ri documentation for ruby-debug-base19-0.11.25... 
Installing RDoc documentation for ruby-debug-base19-0.11.25... 
[email protected]:~/Downloads/Diaspora_new_gems/mar10$ 

Modifiez de façon appropriée en fonction de votre version Ruby (136, ou 180 ou ..). Je viens d'ajouter une installation similaire à une autre gemme ruby-debug-base19-0.11.25, pour référence.

0

ce me arrivait avec Mac OS X 10.6.8 et RVM et la réponse ci-dessous de this page travaillé
gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-p180/
changer juste le rubis 1.9.2 ... à tout ce que vous utilisez Ruby

1

J'ai installé Ruby 1.9.3 en utilisant exe installer er. mais j'ai découvert comment faire fonctionner cette chose. J'ai ouvert le fichier appelé 'ruby_core.rb'. parce que l'erreur était exactement là.

Et j'ai trouvé que cette partie du code ne peut pas télécharger les sources.

# 
    # Download the headers 
    # 
    uri_path = "http://ftp.ruby-lang.org/pub/ruby/1.9/" + ruby_dir + ".tar.gz" 
    Tempfile.open("ruby-src") { |temp| 

    temp.binmode 
    uri = URI.parse(uri_path) 
    uri.download(temp) 

    tgz = Zlib::GzipReader.new(File.open(temp, "rb")) 

    FileUtils.mkdir_p(dest_dir) 
    Dir.mktmpdir { |dir| 
     inc_dir = dir + "/" + ruby_dir + "/*.inc" 
     hdr_dir = dir + "/" + ruby_dir + "/*.h" 
     Archive::Tar::Minitar.unpack(tgz, dir) 
     FileUtils.cp(Dir.glob([ inc_dir, hdr_dir ]), dest_dir) 
    } 
    } 

alors je suis le lien à partir de là, le répertoire créé manuellement qui devrait être à l'intérieur de la variable « ruby_dir » et téléchargé toutes les sources par ce lien. Pour savoir comment s'appelait ce répertoire, j'ai coupé quelques chaînes du code par le haut et je l'ai exécuté en utilisant IRB via la console.

 inc_dir = dir + "/" + ruby_dir + "/*.inc" 
     hdr_dir = dir + "/" + ruby_dir + "/*.h" 

Alors vous avez tous besoin de vérifier dir (chemin complet vers le lieu mentionné) et ruby_dir pour créer un répertoire pour toutes les sources.

bonne chance!