在带有Ruby 1.9.3的Windows 8 x64上,nokogiri gem缺少libxml2

我发现搜索类似问题的是Nokogiri还没有使用Ruby 2.0的 x64支持。 然而,虽然我在Windows x64机器上,我的Ruby版本是来自railsinstaller.org的ruby 1.9.3p392(2013-02-22)[i386-mingw32](使用Rails 3.2.13) 。 这也意味着已经安装了DevKit

gem install nokogiri –pre给出了这个错误:

Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb checking for libxml/parser.h... no ----- libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokog iri.html for help with installing dependencies. ----- *** 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:/RailsInstaller/Ruby1.9.3/bin/ruby --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib --with-iconv-dir --without-iconv-dir --with-iconv-include --without-iconv-include=${iconv-dir}/include --with-iconv-lib --without-iconv-lib=${iconv-dir}/lib --with-xml2-dir --without-xml2-dir --with-xml2-include --without-xml2-include=${xml2-dir}/include --with-xml2-lib=${xml2-dir}/lib 

虽然gem install nokogiri –pre –withwith xml2-lib –with-xslt-lib –platform = ruby会引发此错误:

  Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb --with-xml2-lib --wi th-xslt-lib --platform=ruby *** 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:/RailsInstaller/Ruby1.9.3/bin/ruby --with-zlib-dir --without-zlib-dir --with-zlib-include --without-zlib-include=${zlib-dir}/include --with-zlib-lib --without-zlib-lib=${zlib-dir}/lib --with-iconv-dir --without-iconv-dir --with-iconv-include --without-iconv-include=${iconv-dir}/include --with-iconv-lib --without-iconv-lib=${iconv-dir}/lib --with-xml2-dir --without-xml2-dir --with-xml2-include --without-xml2-include=${xml2-dir}/include --with-xml2-lib=${xml2-dir}/lib C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/mkmf.rb:1544:in `dir_config': undefin ed method `split' for true:TrueClass (NoMethodError) from extconf.rb:147:in `' 

我无法通过SO / google群组/博客/等找到任何具体的解决方案,有吗?

这是我的路径:

  PATH=C:\RailsInstaller\Git\cmd;C:\RailsInstaller\Ruby1.9.3\bin;C:\windows;C:\win dows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program Files( x86)\Git\cmd;C:\Program Files\nodejs\;C:\cygwin\bin;C:\mingw64\x86_64-w64-mingw3 2\bin;C:\mingw64\bin;C:\Program Files (x86)\Heroku\bin;C:\Program Files (x86)\gi t\cmd;C:\Users\Joshua\AppData\Roaming\npm;C:\mingw64\x86_64-w64-mingw32\bin;C:\P rogram Files\PostgreSQL\9.2\bin; 

我也尝试从http://linux.softpedia.com/progDownload/libxml2-Download-162.html下载libxml2并将内容放在C:\ RailsInstaller \ Ruby1.9.3 \ lib以及C:\ RailsInstaller \ DevKit中\ lib但我收到了同样的错误。

tl; dr似乎有两个不同的错误,具体取决于我通过的选项。 parser.h错误和TrueClass’拆分’错误。

@Steve – 有一个新版本的nokogiri(1.6.2)支持x64 Ruby(这在Win7 x64 Ruby 200上适用于我)。 在撰写时,它是在预发布版中,使用以下命令安装:

  gem install nokogiri --prerelease 

我有类似的沮丧,但我刚刚删除了Ruby 2.0,以及我安装的DevKit以保持简单。

然后我:

现在一切正在发挥作用。

请确保您通过以下所有检查: https : //github.com/oneclick/rubyinstaller/wiki/Development-Kit

以下是如何使用Chocolatey和DevKit x64安装适用于Windows 8.1 x64的Nokogiri。

https://stackoverflow.com/a/22210252/148844

 cinst libxml2 cinst libxslt cinst libiconv 

gem install nokogiri – –with-xml2-include = C:\ Chocolatey \ lib \ libxml2.2.7.8.7 \ build \ native \ include –with-xml2-lib = C:\ Chocolatey \ lib \ libxml2.redist。 2.7.8.7 \ build \ native \ bin \ v110 \ x64 \ Release \ dynamic \ cdecl –with-iconv-include = C:\ Chocolatey \ lib \ libiconv.1.14.0.11 \ build \ native \ include –with-iconv -lib = C:\ Chocolatey \ lib \ libiconv.redist.1.14.0.11 \ build \ native \ bin \ v110 \ x64 \ Release \ dynamic \ cdecl –with-xslt-include = C:\ Chocolatey \ lib \ libxslt。 1.1.28.0 \ build \ native \ include –with-xslt-lib = C:\ Chocolatey \ lib \ libxslt.redist.1.1.28.0 \ build \ native \ bin \ v110 \ x64 \ Release \ dynamic

刚刚遇到这个问题,看起来Nokogiri不支持64位Ruby: https : //github.com/sparklemotion/nokogiri/issues/864解决方案似乎是使用32位Ruby,或者等到它们支持64位Ruby 。

更新:更新以反映来自@magiccrafter的评论,现在应该支持64位Ruby。