Установка ruby-debug19 локально - PullRequest
3 голосов
/ 13 ноября 2010

В настоящее время я использую Ruby 1.9.2p0 на 32-разрядной машине с Windows XP. С тех пор как мы обновились до Ruby 1.9, я не могу заставить работать какую-либо форму отладки. Мне сказали, что вам нужен новый гем ruby-debug19, чтобы все заработало. Проблема в том, что прокси моей компании не позволяет менеджеру зависимостей 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, но похоже, что скрипт установки пытается подключиться к внешнему репозиторию, чтобы что-то получить. Если это так, то это абсурдно, зачем мне локально устанавливать гем, если я смог сделать это с менеджером автоматически? Кто-нибудь знает, как я могу установить отладчик чисто локально, автономно? Я ценю любую помощь.

Ответы [ 8 ]

8 голосов
/ 13 ноября 2010

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

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

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

3 голосов
/ 15 ноября 2010

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

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

Хороший краткий обзор вы можете прочитать здесь .

Надеюсь, это поможет ..

1 голос
/ 01 февраля 2012

Я установил ruby ​​1.9.3 с помощью программы установки exe.но я узнал, как заставить эту вещь работать.Я открыл файл с именем '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, чтобы создать каталог для всех источников.

удачи!

1 голос
/ 12 апреля 2011

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

Вы можете посмотреть на этот URL: - http://isitruby19.com/linecache19.

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

Кроме того,

на каком-то этапе мне пришлось даже вручную загружать гемы и использовать gem install с командой "-l", чтобы все заработало .. Команды для этого одинаковы ..

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 , для справки.

1 голос
/ 13 ноября 2010

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

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

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

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

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

0 голосов
/ 27 декабря 2011

Это сработало для меня

$ 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

0 голосов
/ 19 июля 2011

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

0 голосов
/ 13 ноября 2010

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

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