Я всегда работал над решением проблем установки 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/
но он вернул ту же ошибку.
Я следовал за всеми другими связанными статьями Переполнения стека, и ни одна не помогла. у кого-нибудь есть решение?
ruby-on-rails
ruby
rubygems
Рохит А.
источник
источник
Ответы:
Сначала установите зависимости:
Если вы по-прежнему получаете сообщение об ошибке, возможно, вам не хватает цепочки инструментов компилятора:
Вы получите ошибку «libxml2 отсутствует», если вам не хватает набора инструментов для сборки (по крайней мере, я столкнулся с этой проблемой в Debian Lenny).
Тест сборки Nokogiri компилирует заголовочный файл libxml2, чтобы убедиться, что он присутствует, однако он не различает «отсутствует libxml2» и «отсутствует компилятор для проверки libxml2».
источник
Вам может понадобиться установить оба этих пакета
источник
В Mac OS X (Mavericks) установка библиотек с помощью
brew
и настройкаNOKOGIRI_USE_SYSTEM_LIBRARIES=1
перед установкой gem сделали мое дело.Подводя итог:
Если ранее установлено, удалите драгоценный камень:
Используйте Homebrew для установки
libxml2
,libxslt
иlibiconv
:Установите гем, указав пути к библиотекам, с которыми нужно связать:
источник
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
добился целиbrew install libxml2 libxslt homebrew/dupes/libiconv
его для работы--with-xml2-include="/usr/local/opt/libxml2/include/libxml2"
дляgem install nokogiri
команды к работе. Иначе, это покажетlibxml2 version 2.6.21 or later is required!
(моя версия libxml2 2.9.2)У меня была такая же проблема на Fedora 13. После разочаровывающего и неудачного поиска
работать для меня, я смог установить его и обойти ошибку libxml2 через
yum
.Просто установите гем через команду
yum
вместоgem
:Это помогло мне найти правильный ответ для Fedora и, поскольку я использую RVM для управления пакетами Ruby,
Я втяну все драгоценные камни и зависимости Ruby в систему, а не в мою среду RVM, и, по моему опыту, это приведет к очень разочаровывающему и унизительному опыту.
Итак, взяв свою находку драгоценного камня Nokogiri yum, вы можете использовать:
и получить список зависимостей для rubygem-Nokogiri, который показал мне отсутствующие библиотеки. После этого я побежал:
Теперь Nokogiri компилируется в Fedora, а Nokogiri устанавливается. Ох, нам нужны заголовки для компиляции Nokogiri из библиотек уровня.
источник
В Mac OS X (Mavericks), если ни одно из этих решений не работает, попробуйте:
или
в зависимости от архитектуры вашей системы.
источник
Обычно вам нужны файлы для разработки гемов. Пытаться:
(Я только что увидел, что Эрик предложил то же самое в комментарии.)
источник
Я смог установить это с Chocolatey , Windows 8.1 x64 и DevKit x64.
Вам нужно будет проверить правильность номера версии в путях.
Возможно, вам понадобится добавить репозиторий Microsoft NuGet:
источник
...\x64\Release\dynamic\cdecl
.chocolatey sources add -name NuGet -source "https://go.microsoft.com/fwlink/?LinkID=230477"
Это будет:
на серверах RHEL.
источник
В macOS ни один из вышеперечисленных и ниже не работал для меня, пока я явно не указал путь к XCode libxml2
--with-xml2-include
.источник
Я смог установить Nokogiri 1.6.5 на Fedora 20, выполнив:
Затем работает:
источник
Для всех, кто столкнулся с этой проблемой, я решил ее, выполнив эту команду в каталоге проекта
gem install nokogiri -- --use-system-libraries
Обновление: я столкнулся с этим снова и попытался просто обновить драгоценный камень, который работал для меня ...
gem update nokogiri
источник
Вы пытались установить libxml2? Не из rubygems, а через стандартный процесс установки вашей операционной системы. В Ubuntu / Debian, например:
На любой последней версии OS X она должна быть уже установлена.
источник
Для пользователей OSX, если вы уже успешно установили Nokogiri, но при этом получаете ошибки при установке, скажем, с использованием новой версии Ruby, которую вы добавили, и этой ошибки, которая включает в себя следующее сообщение:
Это может свидетельствовать о том, что обновление XCode произошло через App Store, вручную или автоматически, и что вы не открывали его с того времени.
Если это так, вы сможете открыть XCode, согласиться с новой лицензией и успешно установить Nokogiri.
источник
В Mac OS X Yosemite моя ошибка заключалась в том, что я пытался использовать,
sudo gem install
когда это практическое правило, не использовать привилегии суперпользователя при установке гемов.В моем случае он попытался изменить системную установку Ruby, и это не очень хорошая идея. Я установил rbenv, через него установил Ruby 2.2.2 и установил его как
global
, что является термином из документации rbenv. После этого Нокогири мог установить себя с помощью простогоНикаких взломов или обходных путей не требовалось, просто правильно настроенная среда; Нокогири отлично делает все остальное.
источник
sudo
- это ОК, если вы понимаете, как это работает, где оно вступит в силу, почему устанавливаемые или обновляемые файлы должны быть установлены и как отменить действие в случае сбоя. В противном случае, использование песочницы типа rbenv или RVM - ДЕЙСТВИТЕЛЬНО хорошая идея.Был в состоянии установить vagrant-awe, следуя приведенному выше сообщению, но используя следующую команду:
источник
Для Windows x64:
Для получения дополнительной информации проверьте эту тему: https://github.com/sparklemotion/nokogiri/issues/864
источник
Я смог установить Nokogiri, запустив следующие пакеты:
источник
=== TLDR ===
Как указано в инструкциях , соберите Ruby с последним компилятором clang или, по крайней мере, той же версией, которую Rubygems будет использовать для компиляции собственных расширений Nokogiri libxml и libxsl.
Если я использовал RVM, то сборка из источника с
--with-ggc=clang
флагом была для меня такой:Замените
2.2
на любую версию, которую вы хотите.--with-gcc=clang
обеспечивает сборку RVM из исходного кода и использует для этого clang; в противном случае RVM может предустановить бинарный Ruby, что меня и подвело.Затем установите Nokogiri как обычно, используя Bundler или Rubygems.
=== В ГЛУБИНЕ ===
Я боролся с этим некоторое время.
gem install nokogiri
дал мне:Покопавшись
mkmf.log
я увидел:Nokogiri поставляет свои собственные libxml и libxsl (по состоянию на 1.6.4). Подпись, определенная в локальной копии Nokogiri файла parser.h (находится в каталоге установки gem):
Поэтому я не знал, как вызов метода в герметически запечатанном файле conftest.c не может сравниться с файлом заголовка для parser.h.
Когда я понял, что, вероятно, установил двоичный Ruby, я удалил и переустановил, используя
--with-gcc=clang
(для принудительной компиляции и использования clang), и проблема была решена:Я не совсем уверен, почему это работает, поскольку системный заголовок libxml
/usr/include/libxml2/libxml/parser.h
имеет ту же подпись, что и локальная копия Nokogiri .Это странно, но это сработало. Просто убедитесь, что вы собрали Ruby с Clang.
источник
Измените свою версию с этим.
источник