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 отображается сообщение об ошибке.

16 63

16 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

brew install libxml2 libxslt libiconv 

после запуска 'brew install 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

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

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

  1. проверьте, если ваш диспетчер пакетов ОС предоставляет более новую версию libxml2 библиотека

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

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

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

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

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

для 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

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

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

на Yosemite 10.10 этот способ работал для меня:

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

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

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

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

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

Он говорит о том, что bundler использует другую версию ruby, которая используется gem.

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

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

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

когда я запускаю список gem, у меня есть nokogiri (1.6.2.1), но при запуске bundle install он отображает ошибку.

в моем случае, я просто побежал gem install bundler, из которого изготовлен упаковщик начать использовать самогон версию Рубина, и все проблемы исчезли.

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

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

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

xcode-select --install

(Это позволит установить xcode command line tools)

еще один симптом..такие вещи, как статус git, не будут работать. После этого я смог сделать rails новое имя приложения и это было штраф.