我目前正在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?有没有人知道我可以以纯粹的本地离线方式安装调试器?我感谢任何帮助。
答案 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取决于linecache19
和ruby-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)