Подтвердить что ты не робот

Ошибка установки 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>'
4b9b3361

Ответ 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