Nokogiri "Не удалось создать родное расширение gem", когда я запускаю установку пакета

Я использую bundle install и получаю эту ошибку:

Building nokogiri using system libraries.

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

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --use-system-libraries
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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/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-pkg-config
    --without-pkg-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
    --with-pkg-config
    --without-pkg-config

extconf failed, exit code 1

Gem files will remain installed in /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/gems/nokogiri-1.6.2.rc2 for inspection.
Results logged to /Users/myuser/projectpath/vendor/bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/nokogiri-1.6.2.rc2/gem_make.out
An error occurred while installing nokogiri (1.6.2.rc2), and Bundler cannot continue.
Make sure that 'gem install nokogiri -v '1.6.2.rc2'' succeeds before bundling.

Есть идеи, что бы это могло быть?

EDIT:

Я также установил nokogiri, следуя инструкциям из учебника, и странно то, что гем был успешно установлен. Когда я запускаю gem list, у меня есть nokogiri (1.6.2.1), но при запуске bundle install отображается ошибка.

Ответ 1

Предыдущие советы мне не помогли, вот решение для OS 10.9:

brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle install

Ответ 2

В Mavericks это обходное решение сработало для меня:

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

Смотрите: https://github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208

Ответ 3

На Amazon Linux мне пришлось установить эти две библиотеки devel, а затем указать путь include для libxml2

$ yum install libxml2-devel libxslt-devel
$ gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/

Ответ 4

У меня также возникли проблемы с установкой nokogiri, чем я установил следующие пакеты. Это сработало для меня:

libxslt-dev
libxml2-dev
libruby1.8
libreadline-ruby1.8
libopenssl-ruby
libxml2

Я не уверен, какой именно был нужен.

Ответ 5

http://nokogiri.org/tutorials/installing_nokogiri.html. Обратитесь к этой ссылке и установите зависимости, необходимые для nokogiri. Затем запустите этот

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

Ответ 6

В Yosemite 10.10.1 этот шаг не помог (возможно, он работает для других)

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

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

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

bundle install

Ответ 7

Это работало для OS X El Capitan:

brew install libxml2 libxslt libiconv 

После запуска 'brew установите libxml2 libxslt libiconv' Вы можете обнаружить, что они уже установлены. Не стоит беспокоиться, он никогда не боится дважды проверить.

sudo gem install nokogiri -v '1.6.7' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib

bundle install

Измените версию nokogiri, если необходимо. например

sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib

Ответ 8

Ошибка указывает, что ваша системная библиотека libxml2 устарела. Вам нужна версия 2.6.21 или новее.

В моей системе Debian/ubuntu nokogiri компилируется для меня, и я вижу, что у меня есть версия 2.9.1

dpkg -l | grep libxml2-dev
ii  libxml2-dev:amd64                      2.9.1+dfsg1-3                      amd64        Development files for the GNOME XML library

У вас есть три варианта.

  • Проверьте, поддерживает ли ваш менеджер пакетов ОС более новую версию libxml2 библиотека

  • Загрузите последний исходный код libxml2, скомпилируйте и установите это

  • Вручную укажите более старую версию nokogiri в вашем Gemfile который работает со старой библиотекой libxml2. Журнал изменений nokogiri показывает, что у вас не будет этой проблемы с nokogiri версии 1.4.7 (хотя использование более старого версия может подвергнуть вас проблемам безопасности)

Для решения # 3 вы поместите это в свой gemfile: gem 'nokogiri', '1.4.7'

Ответ 9

В Yosemite 10.10 следующие шаги полностью решили мои проблемы:

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

Ответ 10

Для mac причина, по которой это не удалось, заключается в том, что у вас не было последних инструментов для разработчиков Xcode. Nokogiri уже упакован с libxml2. Из-за отсутствия последних инструментов разработки Xcode он не может создавать собственные расширения.

Чтобы обновить инструменты разработчика Xcode, используя:

xcode-select --install

И затем:

gem install nokogiri

Если вы исправите его, используя

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

может получить аналогичное предупреждение позже:

WARNING: Nokogiri was built against LibXML version 2.9.3, but has dynamically loaded 2.9.0

Ответ 11

Этот поток на GitHub дал мне трюк, который мне нужен, чтобы установить Nokogiri 1.6.2 для установки:

У My ~/.gitconfig была настройка autocrlf = input. Когда я удаляю этот параметр, сборка nokogiri преуспевает.

Ответ 12

В Yosemite 10.10 это обходное решение сработало для меня:

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

Ответ 13

Для #CentOS мне нужно было сделать следующее:

gem update --system
yum install libxml2-devel libxslt-devel ruby-devel
gem install nokogiri -- --use-system-libraries

Ответ 14

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

После некоторого рытья я нашел этот поток: https://github.com/bundler/bundler/issues/2648#issuecomment-25124800

Это говорит о том, что с помощью другой версии ruby ​​используется пакет, который используется в gem.

Из пасты OP мы можем видеть, что bundler использует копию системы Mac ruby: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby

В моем случае я обнаружил, что камень появился из brew; which gem дал /usr/local/bin/gem, который символически связан с /Cellar/ruby/2.3.3/bin/gem. Я предполагаю, что случай OP был тем же самым.

Итак, gem и bundler не работают с одной и той же установкой ruby, что объясняет, почему OP видит это:

Когда я запускаю список драгоценных камней, у меня есть nokogiri (1.6.2.1), но при запуске установки пакета отображается ошибка.

В моем случае я просто запустил gem install bundler, что заставило путник использовать версию ruby ​​brew, и все проблемы исчезли.

Ответ 15

В OSX 10.12 (Sierra) это сработало для меня:

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

Ответ 16

У меня была эта точная проблема. Я запускаю среду рельсов на mac. После того, как я перешел из Йосемити в Сьерра, я верю, что это началось.

Чтобы устранить проблему, мне просто пришлось установить xcode command line tools. Я не знаю, удалил ли их обновление Sierra или что.

xcode-select --install

(это установит xcode command line tools)

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

Ответ 17

Это можно исправить установкой libxml2:

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