Установка Nokogiri завершается неудачно - отсутствует libxml2 - PullRequest
151 голосов
/ 08 июня 2011

Я всегда разбирался с проблемами установки Nokogiri, следуя документации, изложенной в руководстве " Установка Nokogiri ".

Но на этот раз, даже после установки всех зависимостей, Nokogiri не был установлен. Я получаю следующую ошибку:

libxml2 is missing.  please visit <http://nokogiri.org/tutorials/installing_nokogiri.html>

Я попытался установить его, указав каталоги libxml2 и libxslt:

sudo gem install nokogiri -- --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib --with-xslt-dir=/usr/

но он вернул ту же ошибку.

Я следовал за всеми другими связанными статьями переполнения стека, и ни одна из них не помогла. У кого-нибудь есть решение?

Ответы [ 19 ]

243 голосов
/ 18 октября 2011

Вам может понадобиться установить оба этих пакета

sudo apt-get install libxslt-dev libxml2-dev
154 голосов
/ 08 июня 2011

Сначала установите зависимости:

sudo apt-get install libxslt-dev libxml2-dev

Если вы все еще получаете сообщение об ошибке, возможно, вам не хватает цепочки инструментов компилятора:

sudo apt-get install build-essential

Вы получите ошибку «libxml2 отсутствует», если вам не хватает набора инструментов для сборки (по крайней мере, я столкнулся с этой проблемой в Debian Lenny).

Тест сборки Nokogiri компилирует заголовочный файл libxml2, чтобы убедиться в его наличии, однако он не различает «отсутствует libxml2» и «отсутствует компилятор для проверки libxml2».

57 голосов
/ 10 мая 2014

В Mac OS X (Mavericks) установка библиотек с brew и установка NOKOGIRI_USE_SYSTEM_LIBRARIES=1 перед установкой гема сделали свое дело.

Подводя итог:

  • Если установлен ранее, удалите самоцвет:

    gem uninstall nokogiri
    
  • Используйте Homebrew для установки libxml2, libxslt и libiconv:

    brew install libxml2 libxslt libiconv
    
  • Установите гем, указав пути к библиотекам, с которыми нужно связать:

    NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"
    
21 голосов
/ 16 февраля 2012

У меня только что была такая же проблема в Fedora 13. После разочаровывающего и неудачного поиска, чтобы заставить

gem install nokogiri

работать на меня, я смог установить его и обойти ошибку libxml2 через yum.

Просто установите гем через yum вместо команды gem:

su
yum search rubygem-nokogiri   #this find the proper package name
yum install rubygem-nokogiri.i686

Это помогло мне найти правильный ответ для Fedora и, поскольку я использую RVM для RubyУправление пакетами

yum install rubygem-nokogiri

втянет все драгоценные камни и зависимости Ruby в систему, а не в мою среду RVM, и, по моему опыту, это приводит к очень разочаровывающему и унизительному опыту.

Итак, взяв находку драгоценного камня Nokogiri yum, вы можете использовать:

yum provides  rubygem-nokogiri

и получить список зависимостей для rubygem-Nokogiri, который показал мне отсутствующие библиотеки.После этого я запустил:

yum install libxml2-devel libxslt libxslt-devel

Теперь Nokogiri компилируется в Fedora, а Nokogiri устанавливается.Ох, нам нужны заголовки для компиляции Nokogiri из библиотек уровня.

13 голосов
/ 08 июня 2011

Обычно вам нужны файлы для разработки гемов.Попробуйте:

sudo apt-get install libxslt-dev libxml2-dev

(я только что увидел, что Эрик предложил то же самое в комментарии.)

12 голосов
/ 21 ноября 2014

В Mac OS X (Mavericks), если ни одно из этих решений не работает, попробуйте:

ARCHFLAGS="-arch x86_64" gem install nokogiri

или

ARCHFLAGS="-arch i386" gem install nokogiri

в зависимости от архитектуры вашей системы.

11 голосов
/ 06 марта 2014

Мне удалось установить это с Chocolatey , Windows 8.1 x64 и DevKit x64.

cinst libxml2
cinst libxslt
cinst libiconv

gem install nokogiri -- 
  --with-xml2-include=C:\Chocolatey\lib\libxml2.2.7.8.7\build\native\include 
  --with-xml2-lib=C:\Chocolatey\lib\libxml2.redist.2.7.8.7\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-iconv-include=C:\Chocolatey\lib\libiconv.1.14.0.11\build\native\include 
  --with-iconv-lib=C:\Chocolatey\lib\libiconv.redist.1.14.0.11\build\native\bin\v110\x64\Release\dynamic\cdecl 
  --with-xslt-include=C:\Chocolatey\lib\libxslt.1.1.28.0\build\native\include 
  --with-xslt-lib=C:\Chocolatey\lib\libxslt.redist.1.1.28.0\build\native\bin\v110\x64\Release\dynamic

Вам нужно будет проверить правильность номера версии в путях.

Возможно, вам потребуется добавить Microsoft NuGet-репозиторий:

-Source "https://go.microsoft.com/fwlink/?LinkID=230477"
11 голосов
/ 24 марта 2013

Это будет:

sudo yum install -y libxml2 libxml2-devel

на серверах RHEL.

5 голосов
/ 04 января 2017

В macOS ни один из вышеперечисленных / ниже действительно не работал для меня, пока я явно не указал путь XCode libxml2 к --with-xml2-include.

gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2 --use-system-libraries
4 голосов
/ 25 ноября 2015

Для всех, кто столкнулся с этой проблемой, я решил ее, выполнив эту команду в каталоге проекта

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

Обновление: я столкнулся с этим снова и попытался просто обновить гем, которыйработал для меня ...

gem update nokogiri

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...