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

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.

У меня такое чувство, что правильные каталоги не указываются друг на друга? Но не знаю, как исправить.

4b9b3361

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