2014-01-02 2 views
7

Я попытался установить Nokogiri 1.6.1 под Руби и РВМ, но терпит неудачу со следующей ошибкой:Установить Nokogiri 1.6.1 под Ruby 2.0.0p353 (установка на основе rvm) не удается (OSX Mavericks)?

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. 

/Users/lmo0/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb 
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-apple-darwin13.0.0/ports/libxml2/2.8.0... OK 
Running 'configure' for libxml2 2.8.0... OK 
Running 'compile' for libxml2 2.8.0... OK 
Running 'install' for libxml2 2.8.0... OK 
Activating libxml2 2.8.0 (from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.1/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0)... 
Extracting libxslt-1.1.26.tar.gz into tmp/x86_64-apple-darwin13.0.0/ports/libxslt/1.1.26... OK 
Running 'configure' for libxslt 1.1.26... ERROR, review 'tmp/x86_64-apple-darwin13.0.0/ports/libxslt/1.1.26/configure.log' to see what happened. 
*** 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 
    --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=/Users/lmo0/.rvm/rubies/ruby-2.0.0-p353/bin/ruby 
/Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/mini_portile-0.5.2/lib/mini_portile.rb:265:in `block in execute': Failed to complete configure task (RuntimeError) 
    from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/mini_portile-0.5.2/lib/mini_portile.rb:257:in `chdir' 
    from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/mini_portile-0.5.2/lib/mini_portile.rb:257:in `execute' 
    from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/mini_portile-0.5.2/lib/mini_portile.rb:65:in `configure' 
    from /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/mini_portile-0.5.2/lib/mini_portile.rb:108:in `cook' 
    from extconf.rb:101:in `block in <main>' 
    from extconf.rb:131:in `call' 
    from extconf.rb:131:in `block in <main>' 
    from extconf.rb:122:in `tap' 
    from extconf.rb:122:in `<main>' 


Gem files will remain installed in /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.1 for inspection. 
Results logged to /Users/lmo0/.rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.1/ext/nokogiri/gem_make.out 
+0

Что находится в 'tmp/x86_64-apple-darwin13.0.0/ports/libxslt/1.1.26/configure.log'? – CDub

+0

У вас установлен Xcode или инструменты Xcode? –

+0

У вас установлены как 'libxml2', так и' libxslt'? –

ответ

7

Проверьте вашу Grep версию и установите последнюю версию с помощью заваривать:

$ grep --version 
grep (BSD grep) 2.5.1-FreeBSD 

$ brew install grep --default-names 

# If above fails, you probably need to tap 
$ brew tap homebrew/dupes 
$ brew install grep --default-names 

$ grep --version 
grep (GNU grep) 2.14.56-1e3d 

С (эта проблема nokogiri) [https://github.com/sparklemotion/nokogiri/issues/935]: «последние версии OSX поставляются с BSD grep, а более старые - GNU grep. И это, возможно, требует сценарий сборки GNU grep "

Уволен из комментария Маверика и дублируется здесь как ответ, а не комментарий, потому что я уже несколько раз сталкивался с этой проблемой и хотел бы сэкономить кому-то еще головную боль. = X

+0

после запуска 'brew install grep --default-names', мне пришлось закрыть и повторно откройте мой терминал до того, как 'grep -version' отобразит версию GNU. – myowz

0

Я написал a post on this после того, как справился с этим сам. Нет необходимости для доморощенного.

Было несколько проблем, с которыми я столкнулся, первый из которых заключается в том, что средства разработки не могут быть найдены, а второй - слишком старый libxml.

Выполнить следующие команды в rubyconsole:

$ sudo xcode-select -switch /Library/Developer/CommandLineTools 
$ gem uninstall nokogiri libxml-ruby 
$ gem install nokogiri 
3

Вы можете попробовать решение, которое я использовал до сих пор, чтобы исправить то же самое ...

Удалить весь старший Libxml-рубин и nokogiri

использование ниже команды для того же

sudo gem uninstall nokogiri libxml-ruby 

, то вы можете попробовать о но версия нокогири имела проблему. Это должно работать отлично.

sudo gem install nokogiri -v '1.6.1' 

Очень похожий ответ, о котором сообщил Дэн, но немного изменилось. Благодарю.

+0

У меня были похожие проблемы и 'ruby -v; gem i -i xxx nokogiri -v '1.6.2.1'' работал хорошо. – davidcondrey

+0

Это было ранее решение, возможно, они выпустили следующую версию 1.6.2.1. Спасибо, что поделился! –

0

Оказалось, есть немного более простое решение:

Удалить эту строку в ~/.bashrc или ~/.bash_profile файла:

GREP_OPTIONS="--color=always" 

с этим:

export GREP_OPTIONS="--color=auto" 

Таким образом, вы выиграли» t нужно установить любые дубликаты. MrPowers @ Nokogiri Issues.

-1

вручную ./configure 'include' и 'lib' местоположения помогли мне. libxml2 расположение источника немного странно, так что я закончил с так вариантов:

gem install nokogiri -- --use-system-libraries --with-xslt-dir=/usr/local/opt/libxslt --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib

конечно, номера версий зависят от того, что на самом деле установлен. на момент написания этой статьи была версия.

в моем случае /usr/local/Cellar/libxml2/2.9.1/include/libxml2 содержит один каталог с именем libxml и /usr/local/Cellar/libxml2/2.9.1/lib содержит libxml2.2.dylib libxml2.a libxml2.dylib pkgconfig xml2Conf.sh: это то, что скрипт ищет, ни одна другая комбинация не сделали компиляции с использованием системных библиотек.

с использованием homebrew nokogiri можно установить без устаревших и несовместимых библиотек libxml2 и libxslt, как указано в этом gist. работая отлично и быстро для меня.

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