2016-01-07 3 views
45

Один из моих разработчиков обновил Nokogiri, а при вытаскивании обновленного Gemfile мой bundle install терпит неудачу.Ошибка при установке Nokogiri (1.6.7) на El Capitan

➜ my-project git:(master) bundle install 
Fetching source index from https://rubygems.org/ 
Using rake 10.4.2 
Using i18n 0.7.0 
Using json 1.8.3 
Using minitest 5.8.3 
Using thread_safe 0.3.5 
Using tzinfo 1.2.2 
Using activesupport 4.2.3 
Using builder 3.2.2 
Using erubis 2.7.0 
Using mini_portile2 2.0.0 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    /Users/me/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb --use-system-libraries 
checking if the C compiler accepts ... yes 
checking if the C compiler accepts -Wno-error=unused-command-line-argument-hard-error-in-future... no 
Building nokogiri using system libraries. 
libxml2 version 2.6.21 or later is required! 
*** 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=/Users/me/.rvm/rubies/ruby-2.1.2/bin/ruby 
    --help 
    --clean 
    --use-system-libraries 
    --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-xml2-dir 
    --without-xml2-dir 
    --with-xml2-include 
    --without-xml2-include=${xml2-dir}/include 
    --with-xml2-lib 
    --without-xml2-lib=${xml2-dir}/lib 
    --with-libxml-2.0-config 
    --without-libxml-2.0-config 
    --with-pkg-config 
    --without-pkg-config 
    --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-exslt-dir 
    --without-exslt-dir 
    --with-exslt-include 
    --without-exslt-include=${exslt-dir}/include 
    --with-exslt-lib 
    --without-exslt-lib=${exslt-dir}/lib 
    --with-libexslt-config 
    --without-libexslt-config 

extconf failed, exit code 1 

Gem files will remain installed in /Users/me/.rvm/gems/[email protected]/gems/nokogiri-1.6.7 for inspection. 
Results logged to /Users/me/.rvm/gems/[email protected]/extensions/x86_64-darwin-13/2.1.0-static/nokogiri-1.6.7/gem_make.out 
An error occurred while installing nokogiri (1.6.7), and Bundler cannot continue. 
Make sure that `gem install nokogiri -v '1.6.7'` succeeds before bundling. 

Как предложено в "Failing to install Nokogiri gem" Я безуспешно пытался бежать:

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

Как предложено в "Failing to install Nokogiri gem" Я также попытался:

gem install nokogiri -- --use-system-libraries 

и:

gem install nokogiri -v 1.6.5 -- --use-system-libraries 

Версия моей операционной системы - El Capitan 10.11.2, и я проверил, что лицензионное соглашение Xcode принято.

Любые идеи о том, как добиться успеха в установке Nokogiri?

+0

Любой успех с 'варку установить libxml2'? – RAJ

+0

Нет, извините, что не изменилось. Но сообщение об установке указывает, что оно уже установлено: 'Эта формула является только кег, что означает, что она не была привязана в/usr/local. OS X уже предоставляет это программное обеспечение, и установка другой версии в параллель может вызвать всевозможные проблемы. Как правило, никаких последствий для вас нет. Если вы создаете свое собственное программное обеспечение и оно требует этой формулы, вам нужно добавить в свои переменные сборки: LDFLAGS: -L/usr/local/opt/libxml2/lib, CPPFLAGS: -I/usr/local/opt/libxml2/include' – ChristofferJoergensen

ответ

131

Вы должны установить xcode-select пакеты, а затем попробуйте установить nokogiri снова. Попробуйте эти команды,

xcode-select --install 

попробуйте

gem install nokogiri 

с любой версией Nokogiri вы хотите.

Nokogiri зависит от множества библиотек, таких как libxslt, libxml и zlib. Перед установкой Nokogiri в любом дистрибутиве Linux необходимо установить версии Dev (включая источник). Для OS X вышеуказанная команда должна работать, я думаю.

Реальное решение представлено в комментариях ниже.

+2

Если ответ« xcode-select: ошибка: инструменты командной строки уже установлены, используйте «Обновление программного обеспечения» для установки обновлений », Затем я запускаю 'xcode-select -update' или что-то в этом роде? – ChristofferJoergensen

+0

Я просмотрел проблемы Nokogiri на github и нашел [это] (http://stackoverflow.com/questions/5528839/why-does-installing-nokogiri-on-mac-os-fail-with-libiconv-is-missing) решение, работающее для капитана el! Посмотрите, может ли это соответствовать вашим требованиям! –

+0

Ссылка Комментарий к github! [link] (https://github.com/sparklemotion/nokogiri/issues/1345#issuecomment-149658333) –

3

Добавить gem "nokogiri", ">= 1.6.7.rc3" в вашем Gemfile

, а затем запустить

bundle install 
+1

Нет, это дало то же самое сообщение об ошибке. Когда я попытался запустить 'bundle update nokogiri', вместо этого я получил такую ​​же ошибку, заканчивая« Ошибка при установке nokogiri (1.6.8.rc1), и Bundler не может продолжаться. Убедитесь, что gem install nokogiri -v '1.6.8.rc1' преуспевает перед связыванием. '. Когда я пытаюсь добавить более строгий «gem» nokogiri »,« 1.6.7.rc3 »в моем Gemfile, я получаю такое же сообщение об ошибке, заканчивая« Ошибка при установке nokogiri (1.6.7.rc3) и Бундлер не может продолжаться. Убедитесь, что gem install nokogiri -v '1.6.7.rc3' преуспевает перед связыванием. ' – ChristofferJoergensen

29

Попробуйте это:

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

А затем запустить

bundle update 

Я надеюсь, что это может помочь вам :)

+3

Это решило мои проблемы. – Vadim

+0

Я бы не рекомендовал это, потому что вы можете попросить Nokogiri работать с неподдерживаемой версией libxml2. –

+0

Это работает для меня под Linux. –

0

Updating Xcode и инструменты командной строки, исправлены все ошибки для меня. После этого я смогу установить Nokogiri с помощью gem install nokogiri, и после этого жемчужина установки рельсов работали нормально.

1

попытка:

apt-get install ruby-nokogiri 
bundle install 
+2

Удачи, используя apt на OS X ... –

7

Я вы используете доморощенного поддерживать библиотеки как libml на вашем компьютере, выполните следующую команду на вашем компьютере может помочь:


gem install nokogiri -v '1.6.8' -- --use-system-libraries --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib/ 

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


brew info libxml2 
0

Следующие шаги работал для меня

ruby -v 
ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13] 

Run the following to install RVM and the latest stable version of Ruby: 
\curl -L https://get.rvm.io | bash -s stable --ruby 

Install the Ruby interpreter: 

rvm install 2.1.0 --autolibs=enable 

After that's finished installing, run: 

source /Users/{your_user_name}/.rvm/scripts/rvm 
Run: 

ruby -v 
ruby 2.1.0p76 (2014-02-24 revision 45161) [x86_64-darwin13.0] 


==> sudo gem install bundler 
Fetching: bundler-1.14.6.gem (100%) 
Successfully installed bundler-1.14.6 
Parsing documentation for bundler-1.14.6 
Installing ri documentation for bundler-1.14.6 
Done installing documentation for bundler after 4 seconds 
1 gem installed