在Windows XP中安装Ruby Curb gem

时间:2009-10-02 21:24:06

标签: ruby curl libcurl windows-xp

我正在尝试使用ruby 1.8进行文件上传,似乎没有好的开箱即用的解决方案。他们似乎都需要一些第三方补丁或项目的分支才能工作。我会使用机械化,但实际上我需要与xml api接口,而机械化似乎专门用于直接处理网页。我已经尝试过RestClient,但它没有开箱即用的多部分表单的功能,你必须使用项目的分支才能使它工作。 Net:HTTP似乎也存在类似的情况 我认为遏制是可行的方法,因为我可能想要使用multicurl来做我计划做的其他事情。但是,在我的Windows机器上,我似乎无法安装路边宝石。 gem install curb给出了一个错误,说我需要指定curl库所在的位置..我已经尝试将选项传递给extconf但到目前为止没有运气。 这是没有任何选项的gem install curb的输出

C:\ruby\lib\ruby\gems\1.8\gems\curb-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 个答案:

答案 0 :(得分:18)

马特,

我以前在Windows中安装curb gem时遇到了麻烦。在试图了解别人如何解决这个问题时,我遇到了很多问题而不是很多解决方案。今晚必须再做一次我决定记录我的步骤并发布结果: http://beginrescue.blogspot.com/2010/07/installing-curb-with-ruby-191-in.html

对于blogspam感到抱歉,希望这对某些人有用。

皮特

答案 1 :(得分:4)

最终,在带有ruby 1.9.1的win7中,以下对我有效(需要更新路径以反映您的卷曲版本的位置(和版本)(可以通过http://curl.haxx.se/download.html#Win32获得))< / p>

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"

这需要几分钟的时间来处理,所以请耐心等待。

答案 2 :(得分:3)

我在回答中使用了Evan的安装配置,并使用了向导中正确的libcurl二进制文件:http://curl.haxx.se/dlwiz/

  

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 /包括“

这对我来说在win 64 64位上有用。

确保选择libcurl,其中包含有关libcurl软件开发的二进制文件的描述。

答案 3 :(得分:1)

查看您尝试解决的潜在问题。之前我一直在寻找一个多部门的客户端,并花了很多时间尝试不同的宝石/工具。 我发现唯一一个令人满意的是Nick 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

答案 4 :(得分:1)

正如我已经评论过的那样,我确实找到了一个简单地使用github gems中提供的rest-client的解决方案。 gem install rest-client 将完成工作。 从那里你可以做一个包含一个或多个文件的多部分帖子。它具有休息客户端所需的所有灵活性。 请参阅此处的文档:http://rdoc.info/projects/archiloque/rest-client 有关如何使用它的示例。

我发现它唯一没有正确解决的问题是解析cookie。我公司使用的cookie在值中可以有相同的符号,并且不能正确解析它们。我放了一些黑客来解决这个问题,但最终又回来咬我了..所以就在前几天我开始分析来自Mechanize / WEBrick的代码,并且能够利用Mechanize的CookieJar来管理其余的Cookie -client ..希望我能让rest-client的作者将这个功能构建到rest-client中,以便其他人不会遇到同样的问题..

答案 5 :(得分:1)

对于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

它几乎安装了。现在有“未定义的引用”警告/错误

答案 6 :(得分:1)

这也适用于Windows 10 x64:

  

gem install curb - --with-curl-lib =“C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/lib64”--with-curl-include =“C:/用户/ WindowsVM /二进制/卷曲7.40.0-devel的-mingw64 /包括“

答案 7 :(得分:0)

当你说你将配置选项传递给extconf.rb时,你的意思是在gem install命令中吗?

如果没有,我相信它会像

那样

gem install curb - --with-curl-dir = dir

它可能是一个不同的配置选项,但是 - 你需要通过它来配置选项。

答案 8 :(得分:0)

执行以下命令及其工作

gem install curb --platform = mswin32

答案 9 :(得分:0)

经过大量的时间花在上面,我放弃了......

上面给出的答案对我不起作用,有些“卷曲”链接坏了,我甚至无法从官方网站下载。

我想要的很简单:在cygwin上安装curb gem。

现在我切换到VirtalBox,并在其上安装了Ubuntu服务器。然后,我在20分钟内安装它没有任何问题。

所以,在cygwin下工作的人们,让我们切换到虚拟机!

答案 10 :(得分:0)

我尝试了上面的所有解决方案,没有任何效果,我放弃了,但幸运的是我后来偶然发现了这篇文章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变量
警告:在路径中使用/ INSTEAD OF \。路径中不允许有空格。例如: C:/curl/curl-7.26.0-devel-mingw32/bin;

<强> 4。安装宝石
警告:再次在路径中使用/ INSTEAD OF \。见上文。

示例命令: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


[注意:请注意--之前的独立--with-...,这对我来说是个问题。]

此时,它应该工作。它对我有用。如果没有,您可以尝试其余的说明:


如果不起作用,请将以下.dll文件复制到ruby / bin目录并再次运行上一个命令。

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

此外,如果这不起作用...更新DevKit并再次运行上一个命令。下载最新版本,然后从控制台转到DevKit目录并运行 ruby dk.rb install --force