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 ответов:
советы выше не помогли мне, вот решение для 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
у вас есть три варианта.
проверьте, если ваш диспетчер пакетов ОС предоставляет более новую версию libxml2 библиотека
загрузите последний исходный код libxml2, скомпилируйте и установите оно
- вручную укажите старую версию 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 завершается успешно.
для #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 новое имя приложения и это было штраф.