Ошибка установки Nokogiri на OSX 10.9 Maverick?

Я обновил свой OSX (Lion) до Mavericks и не могу установить Nokogiri для своих проектов.

Я уже установил XCode 5.0.1, Инструменты командной строки (используя xcode-select --install), и уже установил libxml2 от Homebrew, и у меня все еще есть проблемы.

Ошибка:

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

/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/bin/ruby extconf.rb
checking for libxml/parser.h... *** 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/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/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-libiconv-config
    --without-libiconv-config
/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:368:in `try_do': The complier failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:452:in `try_cpp'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:853:in `block in find_header'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:693:in `block in checking_for'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:280:in `block (2 levels) in postpone'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:280:in `block in postpone'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:276:in `postpone'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:692:in `checking_for'
    from /Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/mkmf.rb:852:in `find_header'
    from extconf.rb:116:in `<main>'


Gem files will remain installed in /Users/ericcamalionte/Locaweb/code/dns-panel/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.9 for inspection.
Results logged to /Users/ericcamalionte/Locaweb/code/dns-panel/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.9/ext/nokogiri/gem_make.out
An error occured while installing nokogiri (1.5.9), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.9'` succeeds before bundling.

Я установил libxml2, libxslt и libiconv из Homebrew и установил параметры для установки Nokogiri, но тоже не сработал.

Я не могу найти, что не так в моей среде, вы можете мне помочь?

30 ответов

Решение

Я нашел этот журнал и увидел, что gcc-4.2 не был найден:

package configuration for libxslt
cflags: -I/usr/local/Cellar/libxslt/1.1.28/include -I/usr/local/Cellar/libxml2/2.9.1/include/libxml2
ldflags: -L/usr/local/Cellar/libxslt/1.1.28/lib -L/usr/local/Cellar/libxml2/2.9.1/lib
libs: -lxslt -lxml2 -lz -lpthread -liconv -lm -lxml2

package configuration for libxml-2.0
cflags: -I/usr/local/Cellar/libxml2/2.9.1/include/libxml2
ldflags: -L/usr/local/Cellar/libxml2/2.9.1/lib
libs: -lxml2

package configuration for libiconv is not found
"/usr/bin/gcc-4.2 -o conftest -I/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1/ruby/backward -I/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/include/ruby-1.9.1 -I. -I/usr/local/Cellar/libxslt/1.1.28/include -I/usr/local/Cellar/libxml2/2.9.1/include/libxml2 -I/usr/local/Cellar/libiconv/1.14/include -I/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/include -I/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxslt/1.1.26/include -I/Users/ericcamalionte/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE    -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe  -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline -DNOKOGIRI_USE_PACKAGED_LIBRARIES -DNOKOGIRI_LIBXML2_PATH='"/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0"' -DNOKOGIRI_LIBXSLT_PATH='"/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxslt/1.1.26"' -I/usr/local/Cellar/libxslt/1.1.28/include -I/usr/local/Cellar/libxml2/2.9.1/include/libxml2  -I/usr/local/Cellar/libxml2/2.9.1/include/libxml2  conftest.c  -L. -L/Users/ericcamalionte/.rvm/rubies/ruby-1.9.2-p320/lib -L/usr/local/Cellar/libxslt/1.1.28/lib -L/usr/local/Cellar/libxml2/2.9.1/lib -L/usr/local/Cellar/libiconv/1.14/lib -L/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/lib -L/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxslt/1.1.26/lib -L/Users/ericcamalionte/.rvm/usr/lib -L.  -Wl,-rpath,/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/lib -Wl,-rpath,/Users/ericcamalionte/.rvm/gems/ruby-1.9.2-p320@dns-panel/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxslt/1.1.26/lib -L/usr/local/Cellar/libxslt/1.1.28/lib -L/usr/local/Cellar/libxml2/2.9.1/lib -L/usr/local/Cellar/libxml2/2.9.1/lib     -lxslt -lxml2 -lz -lpthread -liconv -lm -lxml2  -lxml2  -lruby.1.9.1-static  -lpthread -ldl -lobjc  "
sh: /usr/bin/gcc-4.2: No such file or directory
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */

Для решения этой проблемы я установил apple-gcc42 с помощью доморощенного brew install apple-gcc42 и создал символическую ссылку на мой /usr/bin:

sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 /usr/bin/gcc-4.2

Вы также можете установить Nokogiri на Mac OS X 10.9 Mavericks с полной установкой XCode, используя:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2

Обновить

Для тех, кто использует Yosemite, подойдет следующая команда:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries

или это может быть на самом деле в вашем MacOSX10.11.sdk папка (моя была по состоянию на 18 сентября 2015 года) в любом случае, поэтому, даже если вы еще не дошли до El Capitan, я недавно обновил XCode, и вам может понадобиться использовать путь El Capitan SDK, который следует далее:

Обновить

Для тех, кто использует El Capitan, подойдет следующая команда:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2 --use-system-libraries

Обновить

Для тех, кто использует Sierra, будет работать следующая команда:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2 --use-system-libraries

После навигации по анимированным GIF-файлам мне нужно было просто xcode-select --install и gem install nokogiri работал нормально.

Если вы используете Xcode 5.1, инструменты командной строки не работают для nokogiri 1.6.1. Вам нужно будет загрузить инструменты Apple в конце октября 2013 года. Как только вы это сделаете

sudo xcode-select -s /Library/Developer/CommandLineTools/

чтобы настроить компьютер на использование инструментов командной строки Xcode 5.0.X, затем запустите

gem install nokogiri

Если вы хотите сбросить инструменты командной строки на версию Xcode.app после запуска

sudo xcode-select -r

Или вы можете добавить флаг, чтобы игнорировать неизвестные аргументы командной строки. Тогда установка выглядит так:

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install nokogiri

Вот что сработало для меня на OSX Mavericks:

sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install nokogiri -v '1.6.1' --verbose --no-ri --no-rdoc

Я на OSX Mavericks, и моя проблема оказалась неудачной установки Ruby.

Итак, я переустановил ruby ​​с помощью rvm:

rvm remove ruby 2.0.0p451
rvm remove ruby-2.0.0-p451 && rvm install ruby-2.0.0-p451

Я был тогда в состоянии

gem install nokogiri --no-ri --no-rdoc

Задача решена.

Мне нравится придерживаться системных вещей, как правило. Это сработало для меня:

gem install nokogiri -- --with-iconv-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/ --with-iconv-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/lib/

Я столкнулся с этой проблемой сразу после установки обновления Mavericks 10.9.5 и обновления инструментов разработчика 10.9 от Apple. Я побежал xcode-select --install, но это не решило проблему. Затем я открыл XCode, принял eula и вышел из XCode. Это решило проблему.

Это то же самое, что и сообщение @thomas_witt, но работает на Mac OS X Sierra:

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2 --use-system-libraries

У меня была эта проблема сегодня, на Maverick, вот как я закончил решение проблемы:

brew update
brew install libiconv
brew link libiconv

Убедитесь, что вы знаете, что версия libiconv в Cellar mine ниже 1.14, а затем установите, как показано ниже:

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

Если вам требуется конкретная версия nokogiri, например -v '1.6.2.1', установите ее следующим образом:

gem install nokogiri -v '1.6.2.1' -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

Nokogiri был успешно установлен!

Это работает для меня

system: OS X Yosemite 10.10
rvm: 1.26.10
ruby: ruby 2.2.1 

Просто запустите ниже две команды

$ xcode-select --install

Он попросит вас загрузить "да", а затем попросит установить компонент xcode.

Теперь попробуйте установить gem с помощью команды ниже

gem install nokogiri --no-ri --no-rdoc

Это работает для меня с вышеупомянутой средой.

Here is another reference:

system: OS X Yosemite 10.10
rvm: 1.26.10
brew: 0.9.5
ruby: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]

I got error while installing nokogiri

ошибка как это:

.rvm/rubies/ruby-2.2.0-p0/lib/ruby/1.9.1/mkmf.rb:368:in `try_do': The complier failed to generate an executable file. (RuntimeError)

Сначала вы должны установить инструменты разработки.

then probably need:

$ xcode-select --install

or if you got error like

checking for libxml/parser.h... no

I just fix the lib path by:

gem uninstall nokogiri libxml-ruby
brew update
brew uninstall libxml2
brew install libxml2 libxslt
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2/libxml --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib --with-iconv-dir=/usr/local/Cellar/libiconv/1.14/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/

for bundle need something like:

bundle config build.nokogiri --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2/libxml --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib --with-iconv-dir=/usr/local/Cellar/libiconv/1.14/ --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26/
bundle install

Для людей, использующих MacPorts, убедитесь, что вы установили libxml2 с помощью MacPorts, Затем введите:

bundle config build.nokogiri --use-system-libraries
bundle install

Это должно сделать свое дело, работал для меня без использования полных путей.

Использование brew install libxml2 libxslt если вы используете Homebrew.

Чтобы заставить установку работать, мне пришлось изменить пути к файлам в gem install Команда, чтобы соответствовать тем в моей системе. У меня разные версии libxml2 и libiconv и немного другая файловая структура. Команда с моими изменениями:

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 
                        --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib 
                        --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 
                        --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include 
                        --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

Сообщение об ошибке дает подсказку здесь: The compiler failed to generate an executable file. (RuntimeError)

xcode-select --install # not sure if this is required  
brew install apple-gcc42  
gem install nokogiri  

Вам также может понадобиться установить brew и связать их:

libxml2 libxslt

Я добавил свои выводы сюда после того, как столкнулся с этой же проблемой вскоре после обновления: http://jasdeep.ca/2013/10/installing-nokogiri-fails-os-x-mavericks/

Надеюсь, поможет.

После обновления до Maverick у меня была похожая проблема. Я использую RVM с Ruby 1.9.2-p320, и я попробовал несколько приведенных здесь решений, но ничего не решило проблему.

Затем я перешел на Ruby 2.1.2, и bundle install Установил Нокогири сразу.

brew install libxml2 libxslt
gem install nokogiri -- \
    --with-xml2-include=/usr/local/Cellar/libxml2/*/include/libxml2 \
    --with-xml2-lib=/usr/local/Cellar/libxml2/*/lib \
    --with-xslt-dir=/usr/local/Cellar/libxslt/*

У меня была такая же ошибка при новой установке Mavericks. После неуверенности я переименовал свой пакет приложений Xcode в Xcode 5.0.1.app,

По-видимому, установочный скрипт Nokogiri не указывает в кавычках его пути, и поэтому пространство в имени файла вызывало все виды или проблемы. Так было, пока я не попробовал brew install libxml2 что ошибка стала очевидной.

Извлеченный урок: пробелы в именах файлов - это зло.

Для меня ошибка была в том, что gcc (4.2.1, установленный с Homebrew) жаловался на то, что:

-E, -S, -save-temps and -M options are not allowed with multiple -arch flags

Я решил проблему, форсируя только x86_64:

ARCHFLAGS="-arch x86_64" gem install nokogiri 

Я столкнулся с той же проблемой в течение последних двух недель, пытаясь запустить приложение версии rails 3.

Проблема в том, что ваш rvm/rbenv не использует компилятор Си.

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

CC=gcc rvm install-version

Так что если вы используете Ruby 1.9.3, используйте его следующим образом

CC=gcc rvm install-1.9.3

Используйте эту команду каждый раз, когда вы не можете связать установку или что-либо еще. Эта штука работает на El Capitan, rails 3.2.16, ruby ​​1.9.3, mysql 5.7. Надеюсь, это решит проблему.

Я столкнулся с той же проблемой в течение последних двух недель, пытаясь запустить приложение версии rails 3.

Проблема в том, что ваш rvm/rbenv не использует компилятор Си.

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

CC=gcc rvm install-version

Так что если вы используете Ruby 1.9.3, используйте его следующим образом

CC=gcc rvm install-1.9.3

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

Эта штука работает на El Capitan, rails 3.2.16, ruby ​​1.9.3, mysql 5.7. Надеюсь, это решит проблему.А также, если у вас уже есть XCode, а затем вы не получаете те же ошибки при установке любого драгоценного камня, попробуйте это решение.

Я столкнулся с той же проблемой для Маврика, и решение было:

xcode-select --install

Тем не менее, это не работает, так как на странице загрузки Apple для Command-line-tool сейчас этот установщик не доступен публично.

Итак, если вы хотите использовать инструменты командной строки для Mavricks, вам нужно иметь платный аккаунт. Только тогда вы сможете установить его. После установки вы не столкнетесь с этой проблемой с Nokogiri.

Если у кого-то есть эта проблема на el capitan, при этом используется bundler.

Убедитесь, что инструменты командной строки xcode установлены и запустите это:

bundle config build.nokogiri --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2 --use-system-libraries

В моем случае мне пришлось запустить /usr/bin/gcc-4.2 после символической ссылки. Вы должны принять лицензионное соглашение, иначе оно зависнет.

Все эти чертовы штучки не делали это для меня (я не стал переустанавливать brew, оу), но это наконец-то произошло (найдено в отчете об ошибке в каком-то не связанном проекте):

gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2

Удачи. Уя за #якшайвинг!

Для windows вы также можете попробовать локальную установку:

  1. Загрузите соответствующий драгоценный камень в зависимости от вашей среды.

  2. перейдите в каталог, в котором вы сохранили файл gem.

  3. gem install --local nokogiri-1.6.3.1-x86-mingw32.gem

если не работает, вы можете проверить, установлены ли у вас zlib и mingw или правильный компилятор c.

Ни один из этих ответов не сработал для моего конкретного случая, и, поскольку я новичок, я подумал, что мое решение может помочь кому-то еще.

Я использую Yosemite и использовал Ruby 1.9.3p547. Для p547 была уязвимость, поэтому я пытался обновить ее до Ruby 1.9.3p550 или выше. Я использовал RVM, затем попытался перенести свои драгоценные камни, и многие из них не пошли. Затем я попытался связать установку, но это не удалось, и я подумал, что это может быть конфликт между различными путями и зависимостями, поэтому я удалил старую версию Ruby. Это сломало все.

Я продолжал получать сообщение о том, что компилятор C отсутствует, хотя я скачал XCode и недавно обновил инструменты CLI. Я нашел другой веб-сайт, который велел мне загрузить стороннюю версию GCC, что я и сделал. что сделало все хуже.

Теперь я получаю сообщение о том, что мне нужно исправить свои профили и PATH, иначе может быть проще переустановить OSX. Так я и сделал.

В любом случае, длинная история, просто длинная: решение, которое наконец-то сработало для меня, состояло в том, чтобы избавиться от RVM и просто использовать brew, чтобы загрузить нужную мне версию Ruby перед запуском. bundle install, Установите правильную версию Nokogiri FIRST.

brew install ruby193
sudo gem install nokogiri -v '1.6.0'
bundle install

У меня тоже была эта проблема. Бег brew doctor показал, что у меня была неожиданная версия libiconv в /user/local/lib.

Warning: Unbrewed dylibs were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected dylibs:
    /usr/local/lib/libcharset.1.dylib
    /usr/local/lib/libiconv.2.dylib

Так что я удалил их и переписал libxml:

rm  /usr/local/lib/libiconv*
andromeda:nokogiri-1.6.0 Jeff$ brew install libxml2 libxslt
...
==> Summary
  /usr/local/Cellar/libxslt/1.1.28: 145 files, 3.3M, built in 36 seconds

Наконец то я установил нокогири:

Jeff$ gem install nokogiri
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.0
1 gem installed

Проверьте версию инструментов командной строки. Настройте свой компьютер для использования инструментов командной строки Xcode 5.0.X, затем запустите:

gem install nokogiri
Другие вопросы по тегам