2013-06-24 3 views
5

Я знаю, что это просто, но я просто не могу понять это. Мне нужно запустить скрипт в Ruby, и для этого требуется Nokogiri. У меня есть некоторый опыт работы на других языках, но не в Ruby.Невозможно установить Nokogiri для Ruby в Windows

Вот моя система:

Ruby 2.0.0-p195 (x64) is installed @C:\Programs\RubyLanguage

Ruby Development Kit (mingw64-64-4.7.2-20130224-1432) is installed @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». Так я и сделал. Теперь файл представляет собой пустой список с некоторыми комментариями. Я все еще не могу установить Nokogiri из-за ошибки выше, и я, кажется, никуда не дену с DevKit. Я говорю о том, что шаги в установке Development Kit недостаточно ясны для меня.


Update он теперь говорит, установка Nokogiri не удалось (DevKit работ в соответствии с шагом 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 
+0

Вы абсолютно _need_ DevKit установлены для работы с Nokogiri на окнах (если только у вас не установлены другие инструменты компиляции, что, похоже, не так). Инструкции можно найти здесь (https://github.com/oneclick/rubyinstaller/wiki/Development-Kit). Что именно не работает для вас с установкой DevKit? – PinnyM

+0

Я рекомендую использовать ruby ​​1.9.3, 2.0 на окнах - это рискованное предложение в это время – pguardiario

ответ

13

Update: в версии 1.6.2, Nokogiri Сейчас делает поддерживает 64-битную версию Ruby 2.0.0. (Обратите внимание, что это требует LibXML> = 2.6.21)

Вот ответ, если вам все еще нужно установить версию x86 по какой-то причине или если вы хотите, чтобы понять, как установить и построить камень с помощью DevKit:


Nokogiri еще не поддерживает 64-bit версия Ruby 2.0.0. Вы можете прочитать об этом и follow the status here.

Но Nokogiri не поддерживаетx86 версии рубин 2.0.0 в. Вы должны установить gem на 2.0.0 x86 install.

Это довольно легко установить вручную. Я предпочитаю, что над RailsInstaller, потому что мне нужно поддерживать другие вещи такими, какие они есть.Вот так:

  1. Загрузите и распакуйте файлы для нужной вам версии. Обязательно укажите download the correct version of DevKit для версии x86 версии 2.0.0.

  2. Исправьте путь: Убедитесь, что ваш путь включает в себя каталоги на правый рубин, камень, и DevKit: директорий предположим, что вы установили версию x86 рубина 2.0.0 в C:\rubies\ruby-2-0-0-x86 и связанное с ним DevKit в C:\rubies\DevKit-xxxx-x86 вам нужно будет включить эти каталоги в ваш ПУТЬ:

    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

  3. Inject DevKit в правильной рубиновой установке: после установки рубина и получения верную информацию при вводе ruby -v, затем запустите ruby dk.rb init - в результате чего DevKit настроит & «впрыснул» в правильную рубиновую версию. (NB я всегда должен отредактировать config.yml файл, который производится и положить в правильном пути к установке рубинового я хочу. Не переживайте, если вам нужно, чтобы сделать это.)

0

Yup ... Снижение до 1.9.3 сработало. Tnx для справки. Я положил резюме здесь:

  • Установка Ruby-1.9.3 (Не изменяйте Установите имя на ex.RubyLang или
    конфигурации не находит его автоматически)

  • Установка DevKit (Follow DevKit Установка шаги)

  • Установите Nokogiri

0

Я не был в состоянии установить x64 Nokogiri для Ruby 2.0 в Windows 7, но работает binary gem.

Смежные вопросы