Ответ 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
Я использую 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.
Есть идеи, что бы это могло быть?
Я также установил nokogiri, следуя инструкциям из учебника, и странно то, что гем был успешно установлен. Когда я запускаю gem list
, у меня есть nokogiri (1.6.2.1)
, но при запуске bundle install
отображается ошибка.
Предыдущие советы мне не помогли, вот решение для 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, а затем указать путь include для 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 установите 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, скомпилируйте и установите это
Для решения # 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 для установки:
У My ~/.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
Это говорит о том, что с помощью другой версии 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, и все проблемы исчезли.
В 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
У меня была эта точная проблема. Я запускаю среду рельсов на mac. После того, как я перешел из Йосемити в Сьерра, я верю, что это началось.
Чтобы устранить проблему, мне просто пришлось установить xcode command line tools
. Я не знаю, удалил ли их обновление Sierra или что.
xcode-select --install
(это установит xcode command line tools
)
И еще один симптом... что-то вроде состояния git не будет работать. После этого я смог сделать рельсы новым appname, и все было в порядке.
Это можно исправить установкой libxml2:
brew install libxml2
bundle config build.nokogiri --use-system-libraries
bundle install