Ошибка установки nokogiri gem
Я знаю, что есть много вопросов об этом камне, но никакой ответ не работал у меня.
Когда я запускаю SSH gem install nokogiri
, я получаю эту ошибку:
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0... OK
Running patch with /home/user58952277/.gem/ruby/1.9.3/gems/nokogiri-1.6.2.1/ports/patches/libxml2/0001-Fix-parser-local-buffers-size-problems.patch...
Running 'patch' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0/patch.log' to see what happened.
*** 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.
Мой хост сказал мне, что все библиотеки установлены.
Ниже приведены полные журналы после выполнения команды установки nokogiri:
Building native extensions. This could take a while...
Building nokogiri using packaged libraries.
Building libxml2-2.8.0 for nokogiri with the following patches applied:
- 0001-Fix-parser-local-buffers-size-problems.patch
- 0002-Fix-entities-local-buffers-size-problems.patch
- 0003-Fix-an-error-in-previous-commit.patch
- 0004-Fix-potential-out-of-bound-access.patch
- 0005-Detect-excessive-entities-expansion-upon-replacement.patch
- 0006-Do-not-fetch-external-parsed-entities.patch
- 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch
- 0008-Improve-handling-of-xmlStopParser.patch
- 0009-Fix-a-couple-of-return-without-value.patch
- 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch
- 0011-Do-not-fetch-external-parameter-entities.patch
************************************************************************
IMPORTANT! Nokogiri builds and uses a packaged version of libxml2.
If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:
gem install nokogiri -- --use-system-libraries
If you are using Bundler, tell it to use the option:
bundle config build.nokogiri --use-system-libraries
bundle install
However, note that nokogiri does not necessarily support all versions
of libxml2.
For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/opt/rubies/ruby-1.9.3/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... yes
Building libxml2-2.8.0 for nokogiri with the following patches applied:
- 0001-Fix-parser-local-buffers-size-problems.patch
- 0002-Fix-entities-local-buffers-size-problems.patch
- 0003-Fix-an-error-in-previous-commit.patch
- 0004-Fix-potential-out-of-bound-access.patch
- 0005-Detect-excessive-entities-expansion-upon-replacement.patch
- 0006-Do-not-fetch-external-parsed-entities.patch
- 0007-Enforce-XML_PARSER_EOF-state-handling-through-the-pa.patch
- 0008-Improve-handling-of-xmlStopParser.patch
- 0009-Fix-a-couple-of-return-without-value.patch
- 0010-Keep-non-significant-blanks-node-in-HTML-parser.patch
- 0011-Do-not-fetch-external-parameter-entities.patch
************************************************************************
IMPORTANT! Nokogiri builds and uses a packaged version of libxml2.
If this is a concern for you and you want to use the system library
instead, abort this installation process and reinstall nokogiri as
follows:
gem install nokogiri -- --use-system-libraries
If you are using Bundler, tell it to use the option:
bundle config build.nokogiri --use-system-libraries
bundle install
However, note that nokogiri does not necessarily support all versions
of libxml2.
For example, libxml2-2.9.0 and higher are currently known to be broken
and thus unsupported by nokogiri, due to compatibility problems and
XPath optimization bugs.
************************************************************************
Extracting libxml2-2.8.0.tar.gz into tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0... OK
Running patch with /home/user58952277/.gem/ruby/1.9.3/gems/nokogiri-1.6.2.1/ports/patches/libxml2/0001-Fix-parser-local-buffers-size-problems.patch...
Running 'patch' for libxml2 2.8.0... ERROR, review 'tmp/x86_64-unknown-linux-gnu/ports/libxml2/2.8.0/patch.log' to see what happened.
*** 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=/opt/rubies/ruby-1.9.3/bin/ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
/home/user58952277/.gem/ruby/1.9.3/gems/mini_portile-0.6.0/lib/mini_portile.rb:279:in `block in execute': Failed to complete patch task (RuntimeError)
from /home/user58952277/.gem/ruby/1.9.3/gems/mini_portile-0.6.0/lib/mini_portile.rb:271:in `chdir'
from /home/user58952277/.gem/ruby/1.9.3/gems/mini_portile-0.6.0/lib/mini_portile.rb:271:in `execute'
from extconf.rb:282:in `block in patch'
from extconf.rb:279:in `each'
from extconf.rb:279:in `patch'
from /home/user58952277/.gem/ruby/1.9.3/gems/mini_portile-0.6.0/lib/mini_portile.rb:108:in `cook'
from extconf.rb:253:in `block in process_recipe'
from extconf.rb:154:in `tap'
from extconf.rb:154:in `process_recipe'
from extconf.rb:419:in `<main>'
Ответы
Ответ 1
Наконец, проблема была вызвана самой nokogiri, отправив ей собственный libxml2, который несовместим с некоторыми системами.
Поэтому для установки nokogiri я должен был сказать, что он должен использовать системные библиотеки.
Я установил его вручную:
gem install nokogiri -v 1.6.2.1 -- --use-system-libraries
И это сработало хорошо. Другие ответы не решили.
Ответ 2
macOS High Sierra 10.13
gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/libxml2/
macOS Sierra 10.12:
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/
OS X El Capitan 10.11
gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/
Предположим добавить sudo
, если у вас нет разрешения.
По какой-то причине версия ОС OSX Yosemite не имеет доступной для системы установки libxml2. Nokogiri требует этого для компиляции и, к счастью, Xcode имеет версию libxml2 в комплекте с ней - нам просто нужно указать ее при установке драгоценного камня. Его важно правильно установить Nokogiri, так как прямо сейчас Rails 4.2.1.rc4 автоматически пытается установить его, и вы почувствуете боль.
Оформить этот пост для получения дополнительной информации.
Ответ 3
Я столкнулся с этой же проблемой из-за нелистинговой зависимости сборки. Когда я нашел соответствующий каталог tmp:
find ~/.rbenv/ -name patch.log
Он сказал:
sh: patch: команда не найдена
Исправлено, что с простым:
sudo yum install -y patch
Ответ 4
В OSX Yosemite я сделал xcode-select --install
в терминале. После этого bundle
отлично справился с этим камнем.
Ответ 5
Это работает для меня в Windows 7 Home Basic 64 Bit:
gem install nokogiri -v 1.6.2.1 -- --use-system-libraries
Ответ 6
Это работало для меня с OS X Yosemite.
gem install nokogiri -v 1.6.5 -- --use-system-libraries
Ответ 7
Установка Nokogiri в Mac OS El Capitan:
brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle install
Это работает для меня:)
Ответ 8
Ничто в текущих ответах не работало для меня (я использую Ubuntu 16.04, а не Mac).
Однако, следуя инструкциям в сайте Nokogiri, эта часть сделала трюк:
# See http://www.nokogiri.org/tutorials/installing_nokogiri.html#ubuntu___debian
sudo apt-get install build-essential patch
sudo apt-get install ruby-dev zlib1g-dev liblzma-dev
Примечание. Я использую Nokogiri с 2009 года, и у меня всегда были проблемы с его установкой. Любой дальнейший комментарий, вероятно, не соответствует SO T & Cs:)
Ответ 9
Это то, что сработало для меня на OS X 10.10.3 Yosemite:
sudo gem install nokogiri -- --use-system-libraries --with-xslt-dir=/usr/local/opt/libxslt --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --with-xml2-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib
Ответ 10
Просто как wongzigii говорит, что команда установки работает с этими флагами с macOS 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/
Ответ 11
Nokogiri не нашел Xcode libs на моей машине OSX Sierra, пока я не побежал:
sudo xcodebuild -license accept
Ответ 12
Это сработало для меня:
sudo gem install nokogiri -v 'versionNumber' -- --use-system-libraries --with-xslt-dir=/usr/local/opt/libxslt --with-xml2-include=/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2 --with-xml2-lib=/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/lib
Ответ 13
Наконец, после многократной борьбы для меня работали (OS X 10.8.5, macports). (Я устанавливаю страницы github, т.е. Jekyll)
/opt/local/bin/gem install nokogiri -v 1.6.6.2 -- --use-system-libraries --with-xslt-dir=/usr/local/opt/libxslt --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/include/libxml2 --with-xml2-lib=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib
Ответ 14
В моем случае я использую Mac OSX Mojave и должен был установить пакет, описанный здесь: https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035624
Вот путь к пакету:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
После его установки установка завершилась без проблем.
Ответ 15
Я понял это нелегко и потратил несколько часов, чтобы проследить за сухарями и прочитать то, что люди пробовали. Ничего не помогло Все на этой странице переполнения просто не помогло, вот как я это исправил:
Если вы используете свою машину для других проектов разработки, которых нет в ruby
. Возможно, вы захотите проверить установки диспетчера пакетов для других языков. Что еще более важно - вы можете проверить наличие других установок компилятора c, а именно clang
В моем случае - я установил anaconda/conda(python)
, и это заменило кучу путей в моем .bash_profile
, чтобы использовать clang
в качестве основного компилятора c, где xcode command line tools
и rebenv
все использовали gcc
, установленный через Homebrew ранее.
Я удалил anaconda(using anaconda-clean)
и clang
установку, а затем попытался связать. Это когда я получил проблему missing libxml2
. Затем я REINSTALLED libxml2
перешел через homebrew, чтобы убедиться, что символические ссылки будут переделаны через homebrew
, и следовал приведенным ниже инструкциям, чтобы добавить соответствующий export flags
в мой файл ~/bash_profile
.
Успешно связывает сейчас. Причина в том, что гемы теперь поставляются с тем же компилятором, что и версия ruby, которую я использую для этого проекта.
Докер сделал бы это не проблемой для машины полиглотов, как многие из нас, я полагаю.
Так что головы.
Ответ 16
Шаг 1:
brew install libxml2
Шаг 2:
bundle config build.nokogiri --use-system-libraries
Шаг 3: тогда попробуйте
комплектация
Ответ 17
Используем macOS Sierra.
Пришел к документации nokogiri и следил за ней:
В ОС MAC OSX
Установка должна работать только с помощью Nokogiris vendored libxml2 и libxslt.
Сначала убедитесь, что у вас есть последняя версия RubyGems и инструменты командной строки xcode:
1 gem update --system
2 xcode-select --install
Затем установите nokogiri:
1 gem install nokogiri