无法在 Windows 中安装 Nokogiri for Ruby
Posted
技术标签:
【中文标题】无法在 Windows 中安装 Nokogiri for Ruby【英文标题】:Can't install Nokogiri for Ruby in Windows 【发布时间】:2013-06-24 16:56:09 【问题描述】:我知道这很简单,但我就是想不通。我需要在 Ruby 中运行一个脚本,它需要 Nokogiri。我确实有一些其他语言的经验,但没有 Ruby。
这是我的系统:
Ruby 2.0.0-p195 (x64) 已安装@C:\Programs\RubyLanguage
Ruby 开发工具包 (mingw64-64-4.7.2-20130224-1432) 已安装@C:\Programs\RubyDevKit
当我运行 gem install nokogiri
时,我收到此错误:
ERROR: Error installing nokogiri:
The 'nokogiri' native gem requires installed build tools.
Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
很简单。所以我跟着the link of above 做了第3步。但是第4步说生成“config.yml”。所以我做了。现在该文件是一个包含一些 cmets 的空列表。由于上面的错误,我仍然无法安装 Nokogiri,而且我似乎无法使用 DevKit 。我的意思是开发工具包安装中的步骤对我来说不够清楚。
更新它现在说 Nokogiri 的安装失败(DevKit Works 按照第 5 步:安装 json-1.8.0 的文档 已安装 1 个宝石)
mkmf.log: package configuration for libxslt is not found
package configuration for libxml-2.0 is not found
package configuration for libiconv is not found
find_header: checking for libxml/parser.h... -------------------- no
"x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Programs/RubyLanguage/include/ruby-2.0.0/x64-mingw32 -IC:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/backward -IC:/Programs/RubyLanguage/include/ruby-2.0.0 -I. -IC:/Programs/RubyLanguage/include/libxml2 -IC:/Programs/RubyLanguage/include -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -DXP_WIN -DXP_WIN32 -DUSE_INCLUDED_VASPRINTF -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -L. -LC:/Programs/RubyLanguage/lib -LC:/Programs/RubyLanguage/lib -L. -lx64-msvcrt-ruby200 -lshell32 -lws2_32 -limagehlp -lshlwapi "
In file included from C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/defines.h:153:0,
from C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/ruby.h:70,
from C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby.h:33,
from conftest.c:1:
C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/win32.h: In function 'rb_w32_pow':
C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/win32.h:776:16: warning: conversion to 'double' from 'long double' may alter its value [-Wconversion]
In file included from C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby.h:33:0,
from conftest.c:1:
C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/ruby.h: In function 'rb_float_value':
C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/ruby.h:777:6: warning: negative integer implicitly converted to unsigned type [-Wsign-conversion]
C:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/ruby.h:777:6: warning: negative integer implicitly converted to unsigned type [-Wsign-conversion]
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6:
7: return 0;
8:
/* end */
"x86_64-w64-mingw32-gcc -E -IC:/Programs/RubyLanguage/include/ruby-2.0.0/x64-mingw32 -IC:/Programs/RubyLanguage/include/ruby-2.0.0/ruby/backward -IC:/Programs/RubyLanguage/include/ruby-2.0.0 -I. -IC:/Programs/RubyLanguage/include/libxml2 -IC:/Programs/RubyLanguage/include -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -DXP_WIN -DXP_WIN32 -DUSE_INCLUDED_VASPRINTF -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -o conftest.i"
conftest.c:5:27: fatal error: libxml/parser.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <winsock2.h>
4: #include <windows.h>
5: #include <libxml/parser.h>
/* end */
CMD 日志
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\SEPEHR>gem install nokogiri
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:/Programs/RubyLanguage/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:/Programs/RubyLanguage/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
--without-xml2-lib=$xml2-dir/lib
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=$xslt-dir/include
--with-xslt-lib
--without-xslt-lib=$xslt-dir/lib
--with-libxslt-config
--without-libxslt-config
--with-pkg-config
--without-pkg-config
--with-libxml-2.0-config
--without-libxml-2.0-config
--with-pkg-config
--without-pkg-config
--with-libiconv-config
--without-libiconv-config
--with-pkg-config
--without-pkg-config
Gem files will remain installed in C:/Programs/RubyLanguage/lib/ruby/gems/2.0.0/
gems/nokogiri-1.6.0 for inspection.
Results logged to C:/Programs/RubyLanguage/lib/ruby/gems/2.0.0/gems/nokogiri-1.6
.0/ext/nokogiri/gem_make.out
【问题讨论】:
您绝对需要安装 DevKit 才能在 Windows 上使用 Nokogiri(除非您碰巧安装了其他编译工具,但情况似乎并非如此)。可以在here 找到说明。 DevKit 安装到底有什么不适合你的? 我建议在 windows 上使用 ruby 1.9.3、2.0 是一个冒险的提议 【参考方案1】:更新:从 1.6.2 版开始,Nokogiri 现在确实支持 Ruby 2.0.0 的 64 位版本。 (注意它需要 libxml >= 2.6.21)
如果您出于某种原因仍需要安装 x86 版本,或者您想了解如何使用 DevKit 安装和构建 gem,这里是答案:
Nokogiri 尚不支持 Ruby 2.0.0 的 64 位 版本。您可以阅读它和follow the status here。
但是 Nokogiri 确实支持 x86 版本的 ruby 2.0.0。您应该能够在 2.0.0 x86 安装中安装 gem。
手动安装非常容易。我更喜欢 RailsInstaller,因为我需要按原样维护其他东西。方法如下:
下载并解压缩所需版本的文件。对于 2.0.0 的 x86 版本,请务必download the correct version of DevKit。
修复您的路径:确保您的路径包含正确的 ruby、gem 和 DevKit 目录的目录:
假设您将 x86 版本的 ruby 2.0.0 安装到 C:\rubies\ruby-2-0-0-x86
并将相关的 DevKit 安装到 C:\rubies\DevKit-xxxx-x86
中,您需要在 PATH 中包含这些目录:
C:\rubies\ruby-2-0-0-x86\bin C:\rubies\ruby-2-0-0-x86\lib\ruby\gems\2.0.0 C:\rubies\DevKit-xxxx-x86\bin
将 DevKit 注入正确的 ruby 安装:安装 ruby 并在键入 ruby -v
时可以获得正确的信息,然后运行 ruby dk.rb init
- 这将设置 DevKit 并“注入”到正确的红宝石版本。 (注意,我总是必须编辑生成的 config.yml
文件,并将其放入我想要的 ruby 安装的正确路径。如果你需要这样做,请不要担心。)
【讨论】:
【参考方案2】:是的...降级到 1.9.3 有效。寻求帮助。我把总结放在这里:
安装 Ruby 1.9.3(不要将安装名称更改为 ex.RubyLang 或 config 没有自动找到)
安装 DevKit(按照 DevKit 安装步骤)
安装 Nokogiri
【讨论】:
【参考方案3】:我无法在 Windows 7 上安装 x64 Nokogiri for Ruby 2.0,但 binary gem 似乎可以正常工作。
【讨论】:
以上是关于无法在 Windows 中安装 Nokogiri for Ruby的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Windows XP Professional 中安装 Python 3.5
无法在 Windows 上的 Git Bash 中安装 pylint(Windows 应用商店)
npm install:无法在 Windows 10 中安装依赖项
IBM Worklight 6.1:无法在 Windows 7 中安装
无法在 Windows 中安装 pycocotools:致命错误 C1083:无法打开包含文件:'io.h':没有此类文件或目录错误: