OS X Lion, Попытка установить Nokogiri - отсутствует libxml2 - PullRequest
33 голосов
/ 03 февраля 2012
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.

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

Ответы [ 17 ]

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

В 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"

32 голосов
/ 12 декабря 2014

Абсолютно нет из других ответов здесь работал для меня.

В последней версии 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
16 голосов
/ 26 июля 2012

Та же проблема произошла со мной на Льве. Занял несколько часов, читая посты, пробуя домашний вар, макпорт и т. Д. Когда я нашел этот пост и прочитал содержимое .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
10 голосов
/ 26 ноября 2013

Я столкнулся с той же проблемой для Маврика, и решение было

xcode-select --install

Однако это не сработало, поскольку на странице загрузки Apple этот установщик не доступен публично. Так что, если вы хотите иметь инструменты командной строки для Mavricks, вам нужно иметь платную учетную запись, тогда только вы сможете установить ее. После установки вы не столкнетесь с проблемой Nokogiri.

9 голосов
/ 03 февраля 2012

Проверка 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 голосов
/ 03 декабря 2014
brew install libxml2 libxslt 
gem install nokogiri -v '1.6.5' -- --use-system-libraries
6 голосов
/ 14 августа 2015

Как по мне, это помогает:

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
3 голосов
/ 04 февраля 2015

На 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

3 голосов
/ 24 апреля 2012

Опоздал на вечеринку, но в случае, если у кого-то все еще есть эта проблема при использовании 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
2 голосов
/ 04 апреля 2013

Для моей несколько устаревшей системы, столкнувшейся с вышеуказанными проблемами, а именно:

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

Надеюсь, это кому-нибудь поможет!

...