OS X Lion, Попытка установить Nokogiri - отсутствует libxml2
sudo gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/Users/sajeev86/.rvm/rubies/ruby-1.8.7-p352/bin/ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** 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. Сейчас я обманывал меня. Я также установил зависимости через MacPorts и Homebrew.
У меня такое чувство, что правильные каталоги не указываются друг на друга? Но не знаю, как исправить.
Ответы
Ответ 1
В Mavericks, установка библиотек с Homebrew и установка 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"
Ответ 2
Абсолютно нет других ответов здесь работало для меня.
В последней версии Mavericks единственным методом, который преуспел для меня, было следующее:
$ brew install libxml2 libxslt libiconv
$ sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
Ответ 3
То же самое случилось со мной на Lion. В течение нескольких часов читал сообщения, пробуя доморощенные, macports и т.д. Когда я нашел этот пост и прочитал содержимое .rvm/gems/ruby-1.8.7-p358/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log, я увидел:
find_header: checking for libxml/parser.h... -------------------- no
"/usr/bin/gcc-4.2 -E -I. -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/i686-darwin10.8.0 -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I/usr/include -I/usr/include/libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -g -O2 -fno-common -pipe -fno-common -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include <libxml/parser.h>
/* end */
Однако gcc-4.2 не существовало:
$ ls /usr/bin/gcc*
/usr/bin/gcc
Следовательно, я смог решить проблему и получить nokogiri для установки, создав gcc-4.2 символическую ссылку на gcc.
sudo ln -s gcc gcc-4.2
Ответ 4
Я столкнулся с той же проблемой для Mavrick, и решение было
xcode-select --install
Однако это не работало, поскольку страница загрузки Apple не имеет этого установщика, доступного публично.
Поэтому, если вы хотите иметь инструменты командной строки для Mavricks, вам нужно иметь платный аккаунт, и только вы сможете его установить.
После его установки вы не столкнетесь с этой проблемой Nokogiri.
Ответ 5
Проверка URL-адреса, указанного в сообщении об ошибке (http://nokogiri.org/tutorials/installing_nokogiri.html). Я думаю, что вопрос заключается в том, какую версию Homebrew вы используете?
brew -v
Я бы обновил до 0.8+
brew update
brew upgrade
а затем повторите попытку установки:
brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
Ответ 6
Что касается меня, это помогает:
brew install libxml2 libxslt
если разрешение отклонено sudo chown -R $USER /Library/Caches/Homebrew/
sudo env ARCHFLAGS="-arch x86_64"
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
Ответ 7
brew install libxml2 libxslt
gem install nokogiri -v '1.6.5' -- --use-system-libraries
Ответ 8
Поздно к стороне, но в случае, если кто-то все еще имеет эту проблему при использовании MacPorts:
Добавьте каталог /include к вашему PATH в ваш файл .profile, чтобы nokogiri знал, где его найти.
например.
MacPorts записывает в ваш файл .profile и по умолчанию добавляет следующую строку:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
Сначала добавьте путь /include следующим образом:
export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/include/:$PATH
Затем запустите это из одного окна терминала:
source ~/.profile
(это говорит, что ваш терминал проверяет файл .profile для любых изменений)
Наконец, попробуйте установить камень из одного окна терминала.
sudo gem install nokogiri
Ответ 9
В Yosemite я использовал:
brew install libxml2 libxslt
sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
Очень близко к некоторым из приведенных выше команд, но без libconv
Ответ 10
Для моей несколько устаревшей системы, столкнувшейся с вышеперечисленными проблемами, в частности:
FENG-SHUI:demo Eric$ brew install libxml2
==> Downloading ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching patching file threads.c patching file xpath.c
==> ./configure --prefix=/usr/local/Cellar/libxml2/2.9.0 --without-python
==> make
==> make install
==> Caveats This formula is keg-only: so it was not symlinked into /usr/local.
Mac OS X already provides this software and installing another version in parallel can cause all kinds of trouble.
Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:
LDFLAGS: -L/usr/local/opt/libxml2/lib
CPPFLAGS: -I/usr/local/opt/libxml2/include
Error: Failed to create: /usr/local/opt/libxml2
Things that depend on libxml2 will probably not build.
==> Summary /usr/local/Cellar/libxml2/2.9.0: 273 files, 11M, built in 2.0 minutes
FENG-SHUI:demo Eric$ brew install libxml2 libxslt
Error: libxml2-2.9.0 already installed
Error: /usr/local/opt/libxml2 not present or broken Please reinstall libxml2. Sorry :(
Это была волшебная формула для успешного запуска libxml2 и libxslt:
# latest version 2.9.0
brew install libxml2
# installing libxslt from source code
# get latest libxslt from ftp://xmlsoft.org/libxml2/libxslt-git-snapshot.tar.gz..
# then
./configure --prefix=/usr/local/Cellar/libxslt/1.1.28 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.9.0
make
sudo make install
# installing nokogiri with this new compiled libs
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28
Благодаря этому парню: https://gist.github.com/fabioyamate/443160
Надеюсь, это поможет кому-то!
Ответ 11
Попробуйте добавить --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib
к своей команде, предположив, что где MacPorts libxml2.
Ответ 12
Я боролся с этим в течение нескольких часов, пока не нашел этот blogpost: http://www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard
Запуск команды
file/usr/local/lib/libxml2.2.dylib
в возвращаемом терминале
/usr/local/lib/libxml2.2.dylib: динамически связанная разделяемая библиотека Mach-O i386
что означает, что мой libxml2.2 был скомпилирован для 32-битной системы, поэтому мне пришлось перекомпилировать libxml2 для 64-битной ОС (Lion)
Сначала я загрузил LATEST_LIBXML2 из ftp://xmlsoft.org/libxml2 и выполнил следующие команды:
tar xzvf LATEST_LIBXML2
cd libxml2-2.8.0
./configure --with-python =/Система/Library/Рамки/Python.framework/Версии/2.3/
сделать
Затем я загрузил LATEST_LIBXSLT с одного и того же сайта и выполнил следующие команды:
tar xzvf LATEST_LIBXSLT
cd libxslt-1.1.26
./Configure
сделать
sudo make install
Выполнение
file/usr/local/lib/libxml2.2.dylib
снова возвращен
/usr/local/lib/libxml2.2.dylib: Mach-O 64-разрядная динамически связанная общая библиотека x86_64
И я мог бы наконец установить nokogiri!
Ответ 13
Это работало для меня на OSX - так же, как и ответ @remeberer, но с полным путем.
sudo ln -s/usr/bin/gcc/usr/bin/gcc-4.2
Ответ 14
Мне пришлось использовать эту команду для работы:
sudo gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries
(источник: http://www.virtlab.cx/ruby-fix-error-install-nokogiri-yosemite/, большое спасибо автору)
Ответ 15
столкнулся с аналогичной проблемой установки на горном льве, за исключением команды make, которая ищет gcc-4.2 в /usr/local/opt/apple -gcc42/bin
это решило проблему для меня; не нужно brew устанавливать libxml2 или libxslt или добавить параметр --with:
mkdir -p /usr/local/opt/apple-gcc42/bin
ln -s /usr/bin/gcc /usr/local/opt/apple-gcc42/bin/gcc-4.2
Ответ 16
Если вы устанавливаете более старую версию Nokogiri, то есть pre 1.6, это может помочь:
В руководстве по установке Nokogiri, они упоминают:
Поскольку Nokogiri необходимо скомпилировать и динамически связать с как libxml2, так и libxslt, он заслужил репутацию сложно установить.
Начиная с Nokogiri 1.6, исходный код libxml2 и libxslt связан с Nokogiri, и скомпилирован на gem-install-time. Этот документ должен работать для всех версий 1.6.4 и более поздних версий.
(Если вам нужна поддержка для установки более ранних версий Nokogiri, вы может захотеть просмотреть историю git для этого документа.)
Действительно, его сложно установить, но есть способ. Я начал копаться в истории readme и решил это, с хорошо написанным сообщением о фиксации:
" Homebrew, я прямо вас ненавижу."
Из этого сообщения и из других ответов здесь я понял, что для установки Nokogiri мне нужно быть очень специфичным в libxml2 lib, dir и include каталогах. Следующие работали для меня, но, пожалуйста, обновите их в соответствии со своей версией программного обеспечения libxml2 (мой был 2.9.2
, и я устанавливал Nokogiri 1.5.0
):
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -v '1.5.0' --
--use-system-libraries
--with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib
--with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config"
--with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"
--with-xml2-dir=/usr/local/Cellar/libxml2/2.9.2/
--with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2
Ответ 17
Для меня я просто сделал следующее
xcode-select --install
gem install nokogiri
Для более глубокого устранения неполадок, проверка Установка Nokogiri