Ошибка установки 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, но не работает тоже.

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

Ответ 1

Я нашел этот журнал и увидел, что 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/[email protected]/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/include -I/Users/ericcamalionte/.rvm/gems/[email protected]/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/[email protected]/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0"' -DNOKOGIRI_LIBXSLT_PATH='"/Users/ericcamalionte/.rvm/gems/[email protected]/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/[email protected]/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/lib -L/Users/ericcamalionte/.rvm/gems/[email protected]/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/[email protected]/gems/nokogiri-1.6.0/ports/x86_64-apple-darwin13.0.0/libxml2/2.8.0/lib -Wl,-rpath,/Users/ericcamalionte/.rvm/gems/[email protected]/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 с помощью homebrew 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

Ответ 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

Update

Для тех, кто использует 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, и вам может понадобиться для использования пути SDK El Capitan, следующего за ним:

Update

Для тех, кто использует 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

Update

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

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

Ответ 3

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

Ответ 4

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

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

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

gem install nokogiri

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

sudo xcode-select -r

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

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

Ответ 5

Это то, что сработало для меня в 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

Ответ 6

Я на 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

Проблема решена.

Ответ 7

Мне нравится придерживаться системного материала. Это сработало для меня:

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/

Ответ 8

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

Ответ 9

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

brew update
brew install libiconv
brew link libiconv

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

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

Если вам нужна определенная версия nokogiri e.g -v '1.6.2.1', установите ее как:

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

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

Ответ 10

Это то же самое, что и пост @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

Ответ 11

Чтобы заставить программу работать, мне пришлось изменить пути к файлу в команде 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

Ответ 12

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

Ответ 13

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

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

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

Ответ 14

Вот еще одна ссылка:

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]

У меня возникла ошибка при установке 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)

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

то, вероятно, необходимо:

$ xcode-select --install

или если вы получили ошибку, например

checking for libxml/parser.h... no

Я просто исправлю путь lib:

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/

для пакета нужно что-то вроде:

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

Ответ 15

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

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

Это работает для меня с окружающей средой.

Ответ 16

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

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

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

Ответ 17

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

xcode-select --install

Однако это не работает как Страница загрузки Apple для инструмента командной строки не имеет доступного этого установщика.

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

Ответ 18

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

Ответ 20

Сообщение об ошибке дает следующую информацию: 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

Ответ 21

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/*

Ответ 22

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

Затем я перешел на Ruby 2.1.2 и bundle install установил Nokogiri немедленно.

Ответ 23

Для меня ошибка заключалась в том, что 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 

Ответ 24

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

Убедитесь, что инструменты командной строки 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

Ответ 25

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

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

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

CC=gcc rvm install-version

Итак, если вы используете Ruby 1.9.3, используйте его таким образом

CC=gcc rvm install-1.9.3

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

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

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

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

CC=gcc rvm install-version

Итак, если вы используете Ruby 1.9.3, используйте его таким образом

CC=gcc rvm install-1.9.3

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

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

Ответ 26

У меня тоже была эта проблема. Запуск 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

Наконец, я установил nokogiri:

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

Ответ 27

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

Я использую 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

Ответ 28

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

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

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

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

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

Ответ 29

Каждая проклятая вещь здесь не делала этого для меня (я не попадал в brew reinstalls, oy), но это, наконец, (найдено через отчет об ошибке в каком-то несвязаном проекте):

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

Удачи. Yay для #yakshaving!

Ответ 30

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

gem install nokogiri