2010-11-12 3 views
3

В настоящее время я запускаю Ruby 1.9.2p0 на 32-разрядной машине Windows XP. С тех пор как мы обновили до Ruby 1.9, я не могу заставить любую форму отладки работать вообще. Мне сказали, что вам нужен новый камень ruby-debug19, чтобы все было в порядке. Проблема заключается в том, что прокси-сервер моей компании не позволяет диспетчеру зависимости gem подключаться к внешним репозиториям. Это нормально, я просто скачу сам камень и установи его локально. Результаты:Установка ruby-debug19 local

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, но это выглядит как сценарий установки пытается подключить внешний репозиторий, чтобы захватить что-нибудь. Если это так, это абсурдно, почему бы мне локально установить драгоценный камень, если бы я смог сделать это с менеджером автоматически? Кто-нибудь знает, как я могу установить отладчик в чисто локальном, автономном режиме? Я ценю любую помощь.

ответ

1

рубиново-отладки для Ruby 1.9 использует определенную особенность Ruby 1.9, который не подвергается в обычных заголовках (Internals)

Из-за этого, рубиново-отладки будет пытаться загрузить пакет с исходным кодом, который соответствует вашей версии Ruby, и извлекать эти заголовки на этапе компиляции.

Я согласен, что это абсурдно, но поскольку он использует некоторые недокументированные функции внутренних заголовков Ruby, нет никакого способа обойти.

Это вызвано ruby_core_source самоцвет, который вы можете просмотреть его исходный код here

Я бы порекомендовал вам использовать браузер для загрузки точного номера патчей вашей версии Ruby (указано в выходных данных вы указали выше) и глядя на действия ruby_core_source, извлекайте файлы заголовков в указанных местах, см. line 38 of ruby_core_source.rb

0

Gem поддерживает прокси. Вы можете играть с этими двумя параметрами:

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

У меня была точно такая же проблема, и я второй Луис Lavena - просто скопировать все * .h и * .inc файлы из ваших источников рубина в каталог, который эту команду выдает:

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

Тогда ruby_core_source найдет их и с радостью продолжит установку.

+0

Ницца! Все еще работает год спустя! –

+0

, пожалуйста, помогите мне ... я не могу найти файлы * .inc в моем рубиновом каталоге :-( –

+0

Выводится ли ваша рубиновая директория из исходного репо, например http://svn.ruby-lang.org/repos/ruby/ ветки/ruby_1_9_2? – Roman

3

У меня были такие же проблемы раньше, хотя я не за прокси. Возможно, это решение поможет. Драгоценный камень ruby-debug19 зависит от linecache19 и ruby-debug-base19 (и некоторых других, как упоминал Луис). Не уверен в последнем, но первый не приходит с двоичными файлами для окон, которые были источником моих проблем. Чтобы правильно установить локально, вы должны загрузить драгоценные камни в каталог, а затем выполнить gem install -l, как вы, вероятно, сделали. Все необходимые драгоценные камни можно скачать с here.

Поскольку linecache19 не поставляется с двоичными файлами win32, он попытается «создать собственные расширения», скомпилировав исходный код. Это не удастся на большинстве компьютеров Windows, если у вас нет компилятора VC6, или, альтернативно, установить dev-kit, следуя this link. Этот пакет требует установки рубина с помощью ruby installer for windows. После установки dev-kit вы не должны получать сбои при создании собственных расширений.

Вы можете прочитать хороший краткий обзор here.

Надеется, что это помогает ..

1

Если вы используете RVM,

Вы могли бы рассмотреть возможность взглянуть на этом URL: - http://isitruby19.com/linecache19.

Работал для меня ..

Кроме того,

на сцене, мне пришлось даже вручную загрузить камни и использовать драгоценный камень установить с помощью команды «-l», чтобы получить вещи работать .. Для команды для них ...

[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$ 

Изменить соответствующим образом на основе вашей версии Ruby (136 или 180 или ..). Я только что добавил аналогичную установку по другой драгоценности ruby-debug-base19-0.11.25, для справки.

0

это происходит со мной с OSX 10.6.8 и РВМ и ответ ниже от this page работал
gem install ruby-debug19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-p180/
просто изменить рубин-1.9.2 ... к тому, что Ruby вы используете

1

я установил рубин 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" 

Таким образом, вы все должны проверить директории (полный путь к указанному месту) и ruby_dir создать каталог для всех источников.

удачи!

Смежные вопросы