web-dev-qa-db-fra.com

OS X Lion, tentative d'installation de Nokogiri - libxml2 est manquant

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.

Je ne parviens pas à installer Nokogiri. Cela me fait payer depuis un certain temps maintenant. J'ai également installé les dépendances via MacPorts et Homebrew.

J'ai l'impression que les bons répertoires ne sont pas pointés l'un vers l'autre? Mais pas la moindre idée de comment réparer.

33

Absolumentnonedes autres réponses données ici ont fonctionné pour moi.

Sur la dernière version de Mavericks, la seule méthode qui a réussi pour moi était la suivante:

$ 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
32
Crates

Le même problème m'est arrivé sur Lion. A pris des heures de lecture de messages, d'essais de homebrew, de macports, etc. Quand j'ai trouvé ce post et lu le contenu de .rvm/gems/Ruby-1.8.7-p358/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log, j'ai vu:

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 */

Cependant, gcc-4.2 n'existait pas:

$ ls /usr/bin/gcc*
/usr/bin/gcc

Par conséquent, j'ai pu résoudre le problème et obtenir l'installation de nokogiri en faisant de gcc-4.2 un lien symbolique vers gcc.

Sudo ln -s gcc gcc-4.2
16
Rememberer

J'ai rencontré le même problème pour Mavrick et la solution a été la 

xcode-select --install

Cependant, cela ne fonctionnait pas car la page de téléchargement d’Apple n’avait pas ce programme d’installation publiquement disponible .. Donc, si vous voulez avoir les outils de ligne de commande pour Mavricks, vous devez avoir un compte payant, alors vous pourrez l’installer. Une fois installé, vous ne rencontrerez plus ce problème de Nokogiri.

10
shinesecret

Vérification de l'URL donnée dans le message d'erreur (http://nokogiri.org/tutorials/installing_nokogiri.html) Je pense que la question est quelle version de Homebrew utilisez-vous?

brew -v

Je mettrais à jour à 0.8+ 

brew update
brew upgrade

et essayez à nouveau l'installation:

brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
9
ahmeij
brew install libxml2 libxslt 
gem install nokogiri -v '1.6.5' -- --use-system-libraries
6
zires

Quant à moi, ça aide:

brew install libxml2 libxslt

si l'autorisation est refusée 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
6
shilovk

Sur Yosemite j'ai utilisé:

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

Très proche de certaines des commandes ci-dessus mais sans libconv

En retard pour la fête, mais au cas où quelqu'un aurait toujours ce problème lors de l'utilisation de MacPorts: 

Ajoutez le répertoire/include à votre PATH dans votre fichier .profile afin que nokogiri sache où le trouver. 

par exemple.

MacPorts écrit dans votre fichier .profile et ajoute la ligne suivante par défaut:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Commencez par ajouter le chemin/include comme suit:

export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/include/:$PATH

Ensuite, lancez ceci depuis la même fenêtre de terminal: 

source ~/.profile

(ceci demande à votre terminal de revérifier le fichier .profile pour tout changement)

Enfin, essayez d’installer la gemme à partir de la même fenêtre de terminal.

Sudo gem install nokogiri
3
user1136698

Pour mon système quelque peu obsolète rencontrant les problèmes ci-dessus, en particulier:

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 :(

C'était la formule magique pour faire fonctionner joyeusement libxml2 et 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

Merci à ce gars: https://Gist.github.com/fabioyamate/443160

J'espère que cela aide quelqu'un! 

2
ericpeters0n

Je devais utiliser cette commande pour que cela fonctionne: 

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

(source: http://www.virtlab.cx/Ruby-fix-error-install-nokogiri-yosemite/ , merci beaucoup à l'auteur)

1
dulgan

Cela fonctionnait pour moi sur OSX - identique à la réponse de @ remeberer, mais avec un chemin complet.

Sudo ln -s/usr/bin/gcc /usr/bin/gcc-4.2

1
Ziad Sawalha

Essayez d’ajouter --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib à votre commande, en supposant que c’est là que MacPorts libxml2.

1
noodl

J'ai eu du mal avec cela pendant des heures jusqu'à ce que je trouve cet article: http://www.markhneedham.com/blog/2010/07/08/installing-Ruby-1-9-2-with-rvm-on-snow- léopard

Exécuter la commande 

fichier /usr/local/lib/libxml2.2.dylib

dans le terminal rendu 

/usr/local/lib/libxml2.2.dylib: bibliothèque partagée liée dynamiquement Mach-O i386

ce qui signifie que mon libxml2.2 a été compilé pour un système 32 bits, donc je devais recompiler libxml2 pour un système d'exploitation 64 bits (Lion)

J'ai d'abord téléchargé LATEST_LIBXML2 à partir de ftp://xmlsoft.org/libxml2 et j'ai exécuté les commandes suivantes:

tar xzvf LATEST_LIBXML2

cd libxml2-2.8.0

./configure --with-python =/Système/Bibliothèque/Frameworks/Python.framework/Versions/2.3 /

make

Ensuite, j'ai téléchargé LATEST_LIBXSLT à partir du même site et exécuté ces commandes:

tar xzvf LATEST_LIBXSLT

cd libxslt-1.1.26

./configurer

make

Sudo fait installer

Fonctionnement 

fichier /usr/local/lib/libxml2.2.dylib

encore retourné 

/usr/local/lib/libxml2.2.dylib: bibliothèque partagée liée dynamiquement Mach-O x86_64

Et je pourrais enfin installer nokogiri!

1
Ste

Pour moi, j'ai simplement fait ce qui suit

xcode-select --install
gem install nokogiri

Pour un dépannage plus approfondi, consultez Installation de Nokogiri

0
iGbanam

Si vous installez une version plus ancienne de Nokogiri, c’est-à-dire une version antérieure à 1.6, cela peut aider:

Dans le Guide d'installation Nokogiri , ils mentionnent:

Parce que Nokogiri doit être compilé et lié dynamiquement à à la fois libxml2 et libxslt, il a acquis la réputation d'être compliqué à installer.

À partir de Nokogiri 1.6, le code source libxml2 et libxslt est fourni avec Nokogiri, et compilé au moment de l’installation de Gem. Ce document devrait fonctionner pour toutes les versions 1.6.4 et ultérieures.

(Si vous avez besoin d'assistance pour installer des versions antérieures de Nokogiri, vous voudrez peut-être jeter un coup d'œil à l'historique de git pour ce document.)

En effet, il est difficile à installer, mais il y a un moyen. Je suis allé fouiller dans l'historique du fichier readme, et j'ai choisi celui-ci, avec le message de validation bien écrit:

" Homebrew, je te déteste directement. "

À partir de ce message et des autres réponses ici, j'ai compris qu'il me fallait être très spécifique sur les répertoires lib, dir et include de libxml2 lors de l'installation de Nokogiri. Ce qui suit a fonctionné pour moi, mais veuillez mettre à jour pour correspondre à votre version du logiciel libxml2 (le mien était 2.9.2 et j'installais 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
0
Danny

un problème d’installation similaire sur Mountain Lion, sauf que la commande make recherchait gcc-4.2 dans/usr/local/opt/Apple-gcc42/bin

cela a résolu le problème pour moi; inutile d’installer libxml2 ou libxslt ou d’ajouter une option --with:

mkdir -p /usr/local/opt/Apple-gcc42/bin
ln -s /usr/bin/gcc /usr/local/opt/Apple-gcc42/bin/gcc-4.2
0
dan_nl