Установите Ruby Curb gem в windows XP

Я пытаюсь сделать загрузку файлов с ruby 1.8, и кажется, что нет хороших готовых решений. Все они, похоже, нуждаются в каком-то стороннем патче или вилке проекта для работы. Я бы использовал mechanize, но мне действительно нужно взаимодействовать с XML api, и mechanize, похоже, специально для работы непосредственно с веб-страницами. Я пробовал RestClient, но у него нет этой функциональности для составных форм из коробки, вы должны использовать вилку проекта, чтобы заставить его работать. Похожие ситуации, похоже, существуют для Net: HTTP Я думаю, что curb будет способом пойти, так как я могу использовать multicurl в любом случае для некоторых других вещей, которые я планирую сделать. Однако на моей машине windows я не могу установить драгоценный камень бордюра. gem install curb дает ошибку, говоря, что мне нужно указать, где живет библиотека curl.. Я пробовал передавать варианты extconf, но пока не повезло. Вот выход gem install curb без каких-либо опций

C:rubylibrubygems.8gemscurb-0.5.4.0>gem install curb
Building native extensions.  This could take a while...
ERROR:  Error installing curb:
        ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
checking for curl-config... no
checking for main() in curl.lib... 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
        --srcdir=.
        --curdir
        --ruby=C:/ruby/bin/ruby
        --with-curl-dir
        --without-curl-dir
        --with-curl-include
        --without-curl-include=${curl-dir}/include
        --with-curl-lib
        --without-curl-lib=${curl-dir}/lib
        --with-curllib
        --without-curllib
extconf.rb:12:   Can't find libcurl or curl/curl.h (RuntimeError)

  Try passing --with-curl-dir or --with-curl-lib and --with-curl-include
  options to extconf.


Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0/ext/gem_make.out

любые идеи, как я могу получить это работа?

11 ответов


Мэтт,

У меня были проблемы с установкой бордюрного камня в Windows раньше. Пытаясь увидеть, как другие решили это, я столкнулся с множеством вопросов и не очень много решений. Сделать это снова Сегодня вечером я решил документировать свои шаги и результаты: http://beginrescue.blogspot.com/2010/07/installing-curb-with-ruby-191-in.html

извините за blogspam, надеюсь, это кому-то полезно.

пит


в конечном счете, в win7 с ruby 1.9.1 для меня работало следующее (Где пути должны быть обновлены, чтобы отразить местоположение (и версию) вашей версии curl (которую можно получить через http://curl.haxx.se/download.html#Win32))

gem install curb -- --with-curl-lib="C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include="C:/curl/curl-7.21.1-devel-mingw32/include"

Это займет несколько минут, поэтому будьте терпеливы.


Я использовал конфигурацию установки Эвана в его ответе с правильным двоичным файлом libcurl от мастера:http://curl.haxx.se/dlwiz/

самоцвет устанавливает обочину -- --с-curl-lib="C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include="C:/curl/curl-7.21.1-devel-mingw32/include"

этот работал для меня на Win XP 64 бит.

обязательно выберите libcurl с описанием о том, что является двоичным для программного обеспечения libcurl развитие.


глядя на основную проблему вы пытаетесь решить. Я искал клиента multpart-post раньше и потратил много времени, пробуя различные драгоценные камни/инструменты. Единственным, кого я нашел удовлетворительным, был Ник Siegers multipart-post gem

Это было очень просто использовать, я настоятельно рекомендую его.

вот пример кода, который я сделал для моего теста

require "rubygems"
require 'net/http/post/multipart'

url = URI.parse('http://localhost:3000/mytest/1.xml')
File.open("c:/temp/readme.txt") do |jpg|
  req = Net::HTTP::Put::Multipart.new url.path,
    "mytest[attachment]" => UploadIO.new(jpg, "text/plain", "c:/temp/readme.txt")
  res = Net::HTTP.start(url.host, url.port) do |http|
    http.request(req)
  end
  puts res.inspect
end

Как я уже прокомментировал, Я нашел решение, которое просто использовало rest-client, предоставленный в GitHub gems.. gem install rest-клиент сделаю работу. Оттуда вы можете сделать многотомный пост, который может содержать 1 или более файлов.. Он обладает всей гибкостью, которая может понадобиться в rest-клиенте. См. документацию здесь:http://rdoc.info/projects/archiloque/rest-client для примеров о том, как его использовать.

единственное, что я обнаружил, что это не правильно разбирал печенье. Печенье моя компания использует могут иметь знаки равенства в ценности и не разбирать их. Я поставил некоторые хаки, чтобы обойти проблему, но в конце концов это вернулось, чтобы укусить меня.. Поэтому буквально на днях я начал анализировать код от Mechanize / WEBrick и смог использовать CookieJar от Mechanize для управления куки-файлами от rest-client.. Надеюсь, я смогу заставить автора rest-client встроить эту функциональность в rest-client, чтобы другие не у меня те же проблемы, что и у меня..


для Windows 8 команда:

gem install curb -- --with-curl-lib=C:/Utils/curl-7.32.0-dev/lib64 --with-curl-include=C:/Utils/curl-7.32.0-dev/include

и он почти устанавливается. Теперь есть предупреждения/ошибки" неопределенная ссылка"


Это тоже работает, на Windows 10 x64:

самоцвет устанавливает обочину -- --с-curl-lib="C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/lib64" --with-curl-include="C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/include"


когда вы говорите, что передали параметры конфигурации extconf.rb, вы имели в виду в команде gem install?

Если нет, я считаю, что это будет что-то вроде

gem установить бордюр -- --с-curl-dir=dir

Это может быть другой вариант конфигурации, но ... это немного нужно передать ему параметры.


выполнить команду ниже и ее работы

gem установить бордюр -- platform=mswin32


потратив на это много времени, я сдаюсь...

ответы, приведенные выше, не работают для меня, и некоторые из ссылок "curl" сломаны, я даже не могу загрузить с официального сайта.

то, что я хочу, довольно просто: установите curb gem На cygwin.

теперь я переключился на VirtalBox и установил на нем сервер Ubuntu. затем я устанавливаю его за 20 минут без каких-либо проблем.

Итак, люди, работающие под cygwin, давайте перейдем к Виртуальная Машина!


я попробовал все решения выше, и ничего не получилось, я сдался, но, к счастью, позже наткнулся на этот пост http://jooglar.com/edely/content/installing-libcurl-ruby-windows и инструкции там работали отлично.

вот направления, в случае, если сайт идет брюхом вверх:


1. Загрузите версию библиотеки "libcurl"
От http://curl.haxx.se/dlwiz/?type=lib

2. Установить где угодно, но путь не может содержать пробелы.
Убедитесь, что при распаковке файла вы найдете каталоги "bin"и " include"

3. Добавьте путь libcurl (оканчивающийся на /bin;) в систему PATH переменная
предупреждение: использовать / ВМЕСТО \ в пути. На пути не должно быть пробелов. Для образец: C:/curl/curl-7.26.0-devel-mingw32/bin;

4. Установить gem
предупреждение: ЕЩЕ РАЗ, ИСПОЛЬЗУЙТЕ / ВМЕСТО \ в пути. Смотреть выше.

командной например: gem install curb -- --with-curl-lib=C:/curl/curl-7.26.0-devel-mingw32/bin --with-curl-include=C:/curl/curl-7.26.0-devel-mingw32/include


[NB: обратите внимание на отдельной -- до --with-..., это был gotcha для меня.]

на данный момент это должно сработать. У меня получилось. Если это не так, вы можете попробовать остальные инструкции:


если это не работа, скопируйте следующее .dll файлы в каталог ruby/bin и снова запустите предыдущую команду.

  • libcurl.dll
  • libssl32.dll
  • libeay32.dll

кроме того, если это не сработает...обновите DevKit и снова запустите предыдущую команду. Загрузите последнюю версию и с консоли перейдите в каталог DevKit и запустите ruby dk.rb install --force