在本地安装ruby-debug19

时间:2010-11-12 21:26:45

标签: ruby ruby-1.9 ruby-debug

我目前正在Windows XP 32位计算机上运行Ruby 1.9.2p0。自从我们升级到Ruby 1.9以来,我无法进行任何形式的调试。我被告知你需要新的ruby-debug19 gem才能让事情运行起来。问题是,我公司的代理阻止了gem依赖管理器连接外部存储库。没关系,我会自己下载gem并在本地安装。结果:

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

也许我做了不合理的假设,因为我对Ruby很新,但看起来安装脚本试图连接外部存储库以获取某些东西。如果是这样,这是荒谬的,如果我能够自动地与经理这样做,为什么我会在本地安装gem?有没有人知道我可以以纯粹的本地离线方式安装调试器?我感谢任何帮助。

8 个答案:

答案 0 :(得分:8)

我有完全相同的问题,我是第二个Luis Lavena - 只需将ruby源中的所有* .h和* .inc文件复制到此命令打印出来的目录:

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

然后ruby_core_source将找到这些并愉快地继续安装。

答案 1 :(得分:3)

之前我遇到过同样的问题,虽然我不是代理人。也许这个解决方案会有所帮 ruby-debug19 gem取决于linecache19ruby-debug-base19(以及Luis提到的其他一些)。不确定后者,但前者不带有Windows的二进制文件,这是我的问题的根源。 为了在本地正确安装,您应该将gems下载到目录,然后像您可能那样执行gem install -l。所有必要的宝石都可以从here下载。

由于linecache19没有附带win32二进制文件,它将尝试通过编译源代码来“构建本机扩展”。这将在大多数Windows计算机上失败,除非你有VC6编译器,或者通过跟随this link安装dev-kit。此程序包要求您使用ruby installer for windows安装ruby。一旦安装了dev-kit,就不应该在“构建本机扩展”上获得失败。

您可以阅读简短的概述here

希望这会有所帮助..

答案 2 :(得分:1)

Ruby 1.9的ruby-debug使用Ruby 1.9的某些功能,该功能未在普通标头(内部)中公开

因此,ruby-debug将尝试下载与您的Ruby版本匹配的源包,并在编译阶段提取这些头文件。

我同意这是荒谬的,但由于它使用了Ruby内部标题的某些未记录的功能,因此无法解决。

这是由ruby_core_source gem触发的,你可以检查它的源代码here

我建议您使用浏览器下载您的Ruby版本的精确补丁级别(在上面提供的输出中指出)并查看ruby_core_source操作,在指定位置提取头文件,请参阅line 38 of ruby_core_source.rb

答案 3 :(得分:1)

如果你使用RVM,

您可以考虑查看此网址: - http://isitruby19.com/linecache19

为我工作..

此外,

在某个阶段,我甚至不得不手动下载宝石并使用“-l”命令使用gem install来使事情正常工作..同样的命令是......

mohnish@mohnish-desktop:~/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...
mohnish@mohnish-desktop:~/Downloads/Diaspora_new_gems/mar10$ ls

mohnish@mohnish-desktop:~/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...
mohnish@mohnish-desktop:~/Downloads/Diaspora_new_gems/mar10$ 

根据您的Ruby版本(136,或180或..)进行适当更改。我刚刚添加了另一个宝石 ruby​​-debug-base19-0.11.25 的类似安装,供参考。

答案 4 :(得分:1)

我使用exe安装程序安装了ruby 1.9.3。但我发现了如何让这件事发挥作用。我打开了名为“ruby_core.rb”的文件。因为错误就在那里。

我发现这部分代码无法下载源代码。

  #
  # 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)
    }
  }

所以我从那里得到了链接,手动创建的目录应该在“ruby_dir”变量中,并通过该链接下载所有来源。

要了解如何调用此目录,我从顶部剪切了几个代码字符串并通过控制台使用IRB运行它。

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

所以你们都需要查看dir(提到的地方的完整路径)和ruby_dir来为所有来源创建一个目录。

祝你好运!

答案 5 :(得分:0)

Gem确实支持代理。你可能会弄乱这两个参数:

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

答案 6 :(得分:0)

OSX 10.6.8和rvm发生了这种情况,this page下面的答案工作了 gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-p180/
只需将ruby-1.9.2改为你正在使用的红宝石

答案 7 :(得分:0)

这对我有用

$ echo $rvm_path/src/$(rvm tools strings) 
$ rvm @global gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/$(rvm tools strings)

感谢http://isitruby19.com/linecache19