【问题标题】:Install Ruby Curb gem in windows XP在 Windows XP 中安装 Ruby Curb gem
【发布时间】:2009-10-02 21:24:05
【问题描述】:

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

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

有什么想法可以让它发挥作用吗?

【问题讨论】:

  • 我最终的解决方案是使用完全支持文件上传的 ruby​​ rest-client。要做到这一点,只需将gems.github.com 添加到您的来源(如果您还没有)然后执行 gem install rest-client 从那里您可以根据需要使用尽可能多的字段/文件进行多部分发布。此处示例:rdoc.info/projects/archiloque/rest-client这个客户端很好用,强烈推荐。

标签: ruby curl libcurl windows-xp


【解决方案1】:

马特,

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

很抱歉博客垃圾邮件,希望这对某人有用。

皮特

【讨论】:

  • 我收到错误“无效选项:--with-curl-lib”。可能是你现在我该如何解决它?
  • 我也有这个。答案是包含一个额外的双破折号 (--),即 gem install curl -- -- --with-curl-lib[...] (参见basson.at/blog/installing-curb-on-windows
【解决方案2】:

最终,在带有 ruby​​ 1.9.1 的 win7 中,以下内容对我有用(需要更新路径以反映 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"

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

【讨论】:

  • 我收到错误“无效选项:--with-curl-lib”。可能是你现在我该如何解决它?
【解决方案3】:

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

gem install 路边 -- --with-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 软件开发的二进制文件的描述。

【讨论】:

  • 我已经尝试了几乎所有东西,但我认为我无法让它工作,因为我拥有的 curl 版本,向导给了我 Windows 32 位版本,即奇怪,因为我在 64 位 Windows 上,但感谢分享向导的链接!
  • 我不得不在路边之后添加一个“--platform=ruby”并且我的版本号不同,但除此之外这对我有用(curb 0.8.6 / Ruby 2.1.4 / curl 7.39. 0)
【解决方案4】:

着眼于您要解决的根本问题。我之前一直在寻找一个 multipart-post 客户端,并花了很多时间尝试不同的 gems/tools。 我发现唯一满意的是 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

【讨论】:

  • 我认为这不会允许在单个请求中上传多个文件。否则,它看起来像是在请求中上传单个文件的好方法
【解决方案5】:

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

我发现它没有正确执行的唯一一件事是解析 cookie。我公司使用的 cookie 在值中可以有等号,并且无法正确解析它们。我已经采取了一些技巧来解决这个问题,但最终还是让我感到痛苦。所以就在前几天,我开始分析 Mechanize/WEBrick 的代码,并能够利用 Mechanize 的 CookieJar 来管理来自其余部分的 cookie -client.. 希望我可以让 rest-client 的作者将此功能构建到 rest-client 中,这样其他人就不会遇到我遇到的同样问题..

【讨论】:

    【解决方案6】:

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

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

    【讨论】:

      【解决方案7】:

      这也适用于 Windows 10 x64:

      gem install 路边 -- --with-curl-lib="C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/lib64" --with-curl-include="C:/用户/WindowsVM/binaries/curl-7.40.0-devel-mingw64/include"

      【讨论】:

        【解决方案8】:

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

        如果不是,我相信它会类似于

        gem install 路边 -- --with-curl-dir=dir

        它可能是一个不同的配置选项,但 -- 是您需要传递配置选项的那个位。

        【讨论】:

        • 自述文件说要传递这样的选项: rake install EXTCONF_OPTS='--with-curl-dir=/path/to/libcurl --prefix=/what/ever' 所以我做了一些事情类似: rake install EXTCONF_OPTS='--with-curl-dir=c:/curl' 我尝试了该语法/引号的一些变体,还尝试使用 with-curl-dir/with-curl-include 字段明确指定with-curl-dir 没有运气,而且似乎没有多少人在网上用 ruby​​ 运行 curl,所以它可能不是一个好的选择(不幸的是)
        【解决方案9】:

        执行以下命令及其工作

        gem install 路边 --platform=mswin32

        【讨论】:

          【解决方案10】:

          花了很多时间之后,我放弃了......

          上面给出的答案对我不起作用,并且一些“卷曲”链接已损坏,我什至无法从官方网站下载。

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

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

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

          【讨论】:

          • 在我的机器上在虚拟机中工作太慢了。 :) 学习 Powershell 并改用原生 Ruby。
          【解决方案11】:

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

          4.安装 gem
          警告: 再次,在 PATH 中使用 / 而不是 \。见上文。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-07-02
            • 1970-01-01
            • 2010-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多