J'ai essayé d'installer Nokogiri sur Mac OS 10.9.3 et quoi que j'essaye, l'installation échoue à la fin avec le message d'erreur suivant:
$ Sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv 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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Après avoir suivi de nombreuses aides trouvées sur le Web, y compris la construction et l'installation de libxml2 et libxslt à l'aide de brasser et la construction de libiconv à partir des sources (comme décrit dans " Installation de Nokogiri "), l'erreur reste la même.
Lorsque vous essayez d'exécuter l'installation pour Nokogiri, libxml2 et libxslt semblent être trouvés, mais pas libiconv.
Quiconque ayant une meilleure connaissance de ces choses sait comment installer Nokogiri?
J'ai eu le même problème. Malheureusement, le " Installation de Nokogiri " ne couvre pas les problèmes liés à Iconv. Voici comment j'ai résolu le problème.
Commencez par installer homebrew , cela vous facilitera la vie. Si vous l'avez déjà installé, assurez-vous de récupérer les dernières formules en mettant à jour de la manière suivante:
brew update
Remarque : Sous OSX 10.9+, vous devrez peut-être installer les outils de commande xCode pour pouvoir installer libiconv.
xcode-select --install
puis installez une version plus récente de libiconv
brew install libiconv
liez ensuite vos nouvelles bibliothèques iconv:
brew link libiconv
puis installez votre bijou
gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
Essayez d'utiliser les bibliothèques système. OSX est livré avec libiconv dans les versions les plus récentes, mais le script d’installation par défaut semble poser problème.
gem install nokogiri -- --use-system-libraries
Edit: Si vous utilisez un bundler, comme mentionné par Geoff , vous pouvez faire:
bundle config build.nokogiri --use-system-libraries
La solution de @ Cory contient la bonne réponse, mais la solution sur Mavericks est en réalité beaucoup plus simple que la solution la plus performante, aussi je ne republie que les étapes nécessaires.
Sur Mavericks (OSX 10.9 +):
Installer les outils de ligne de commande Xcode:
xcode-select --install
puis installez votre bijou:
gem install nokogiri
J'ai finalement pu résoudre ce problème. Aucune des solutions ci-dessus ne l'a complètement corrigé.
J'avais cette erreur en essayant de gem install nokogiri
sur OSX Lion 10.7.2. Tout d’abord, cette erreur masque le véritable problème en disant que libiconv est manquante, car vous obtiendrez la même erreur même si nokogiri ne peut pas trouver libxslt ou libxml2, ce qui dans mon cas ne l’a pas été.
J'ai donc suivi les instructions sur http://nokogiri.org/tutorials/installing_nokogiri.html dans la section Homebrew (légèrement modifiée pour prendre en compte une version plus récente de libxml2):
brew install libxml2
brew link libxml2
# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
Sudo make install
À ce stade, j'ai suivi les instructions sur le site nokogiri et essayé
gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
Cependant, cela a toujours échoué car lors de la construction de libxslt à partir du source, il installe le /include
dossier dans un endroit génial. Vous devez donc spécifier les dossiers lib
et include
séparément, comme suit:
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt
Cela ne fonctionnait toujours pas (même erreur libiconv), j'ai donc essayé de spécifier les trois bibliothèques requises (libxslt, libxml2 et libiconv):
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
Maintenant, j'ai une erreur différente! C'était toujours une erreur mais au moins c'était différent. Le processus de création a échoué avec:
in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64
Euh quoi? Après beaucoup de recherches sur Google, je suis tombé sur ce message miracle: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not -de-requis-architecture /
Apparemment, OSX Lion est livré avec de mauvaises versions de la bibliothèque libz (libz.dylib, libz.1.dylib, libz.1.2.4.dylib
) et ils doivent être remplacés par les versions les plus récentes du SDK Xcode. L'article explique mieux que je peux donc lire le lien ci-dessus pour des instructions spécifiques.
Une fois ceux-ci remplacés, j'ai couru
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
encore et tout allait bien. J'espère que ça aidera quelqu'un d'autre.
J'ajoute juste ma voix à la foule, mais mkmf.log a dit quelque chose sur le fait de ne pas pouvoir trouver les symboles de l'architecture x86_64. Je suis tombé sur cette solution:
Sudo env ARCHFLAGS="-Arch x86_64" gem install nokogiri -- --use-system-libraries
Peut ne rien résoudre pour le demandeur d'origine, mais cela peut aider quelqu'un.
Note secondaire: nokogiri est mon principal obstacle à l’utilisation des applications Ruby). Chaque fois que quelqu'un dépend d’une version différente, je dois trouver comment le construire. Et mon problème est différent à chaque fois.
J'utilise .. OS X 10.9.4 Homebrew 0.9.4
Voici mon résumé de ce fil pour installer avec succès nokogiri, pour réparer libiconv manquant.
Installez Homebrewhttp://brew.sh/ ou mettez à jour à la dernière en utilisant la commande ci-dessous
brew update
Installez libxml2 libxslt
brew install libxml2 libxslt
Lier les deux libxml2 libxslt
brew link libxml2 libxslt
Si vous êtes averti d'utiliser --force, utilisez simplement la commande ci-dessous
brew link --force libxml2 libxslt
Installer les outils de commande xCode pour vous permettre d'installer libiconv
xcode-select --install
Installez libiconv
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
Sudo make install
Dernière étape, installez nokogiri!
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
J'ai résolu ceci sur Yosemite
en cours d'exécution Ruby 2.1.4
par
xcode-select --install
, puisxcode-select --install
ne fait pas - soupir)bundle install
a fonctionné normalement.J'ai aussi fait un brew install libiconv
aussi mais je ne suis pas convaincu que cette étape était nécessaire.
J'ai essayé beaucoup de choses mais rien n'a fonctionné pour moi. Ensuite, j'ai finalement trouvé le documentation iconv et cela m'a sauvé la journée!
libiconv a été supprimé de Homebrew 0.9. Il est maintenant recommandé de compiler libiconv à partir des sources, puis de faire référence à l'installation lorsque vous installez la gem nokogiri. Consultez les instructions d'installation de Nokogiri dans la section Homebrew 0.9 de la page page d'installation de Nokogiri
En regardant dans le fichier mkmf, il apparaît que nokogiri (ou une gemme, je ne sais pas) essaie de trouver des dépendances dans/op/local /. Pour moi, ce n'est pas le bon chemin pour les rechercher.
Forcer nokogiri à trouver les bibliothèques au bon endroit (j'utilise l'homebrew) a fait l'affaire pour moi:
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
Peut-être y at-il quelque chose à réparer dans le nokogiri ...
HTH,
En supposant que vous avez installé libxml2 et libxslt avec MacPorts, vous risquez toujours de recevoir cette erreur en raison d'une incompatibilité de l'ordre des chemins d'inclusion et des chemins de liaison utilisés par l'appel à have_func ('iconv_open', 'iconv.h').
Solution simple (correctif): supprimez libiconv. * Dans/usr/local/lib
Je me battais avec Nokogiri pendant un certain temps aujourd'hui sous OS X 10.10 Yosemite
Mon environnement a été endommagé pour une raison quelconque.
which bundle
et which gem
me donnaient /usr/bin/bundle
et /usr/bin/gem
au lieu de ~/.rbenv/shims/gem
Ce qui m'a aidé à le corriger, c'était Sudo rm -i /usr/bin/gem /usr/bin/bundle
Après cela, je: 1. suis retourné dans le répertoire de mon projet 2. a désinstallé les bibliothèques dépendantes 3. (ré) a installé les bibliothèques dépendantes: a fait un brew install libxml2 libiconv libxslt
4. a installé mon Ruby version fraîche (avec rbenv) 5. a fait gem install bundler
6. et bundle install
a fonctionné sans aucun problème.
Nokogiri
allait bien par la suite.
Pour référence:
╰─% cat .bundle/config
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_JOBS: 4
╰─% which Ruby bundle gem
~/.rbenv/shims/Ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
comme ci-dessus, c'est la solution pour l'homebrew et l'utilisation de gem install (appliquer les modifications dépend de votre version)
cependant, si vous utilisez Gemfile et Bundle Install, vous devez appliquer la configuration Bundle avant d'installer, voici le code
$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
encore une fois, appliquer les modifications dépend de votre version
j'espère que cela vous aidera.
crédit: https://Gist.github.com/1344331
Vous pouvez également le faire sur Mavericks:
gem install nokogiri - --use-system-libraries = true --with-xml2-include =/Applications/Xcode.app/Contenu/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2
Assurez-vous simplement d'avoir xcode installé
Recherchez dans le fichier mkmf.log du répertoire de construction du gem (par exemple, /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Cela a beaucoup plus d'informations. Dans mon cas, lorsque j'ai trouvé cela, c'est que Nokogiri a spécifiquement ajouté/opt/local/lib au chemin de recherche de la bibliothèque et GNU Backgammon y avait installé une libiconv incompatible.
J'ai eu le même problème avec Mountain Lion. Il s'avère que j'avais déjà installé libiconv via le paquetage rvm et que cela n'est plus nécessaire pour Ruby 1.9.3/Mountain Lion/nokogiri.
Suivant les conseils de https://rvm.io/packages/ , j'ai supprimé mon répertoire $ rvm_path/usr et reconstruit Ruby 1.9.3. Ensuite, l'installation de nokogiri a été un simple bijou à installer, aucun problème avec les installations de brew/macports/source!
UTILISATEURS HOMEBREW
Solution correcte pour résoudre ce problème si vous utilisez homebrew:
xcode-select --install
Choisissez "Get Xcode" dans la boîte de dialogue.
brew unlink libiconv
gem install nokogiri
L’étape xcode-select corrige votre installation Xcode et l’installation de Xcode Command Line Utils. J'ai constaté que je n'avais pas /usr/include/iconv.h en raison d'un problème quelconque avec les mises à niveau ou les restaurations de systèmes d'exploitation. Si vous n'avez pas ce fichier d'en-tête et /usr/lib/libconv.dylib après avoir exécuté xcode-select, vous devrez probablement faire glisser Xcode du dossier Application dans la corbeille, puis le réinstaller puis télécharger manuellement les outils de ligne de commande pour Xcode. à partir de https://developer.Apple.com/downloads/index.action et installez-le.
Ensuite, vous devez dissocier la libiconv de l’homebrew. Tu n'as pas besoin de ça. Et Clang va effectivement récupérer /usr/local/include/iconv.h sur /usr/include/iconv.h et va #define iconv_open à libiconv_open mais sera ensuite lié à /usr/lib/libiconv.dylib qui n'a pas libiconv_open, est ce qui fait que les échecs mkmf trouvent libiconv. Ce que vous devez faire, c'est supprimer le lien dans iconv.h afin que nokogiri ne le trouve pas.
Ensuite, construisez nokogiri normalement.
Pour les nouveaux utilisateurs, tout ce que vous avez à faire est d’installer xcode avec xcode-select et d’installer nokogiri, mais si vous avez trouvé cette question, vous avez probablement une installation bâclée et non une nouvelle installation de Mavericks.
Certaines des autres réponses ici sont certainement incorrectes. La plupart d'entre eux tentent d'utiliser libiconv en dehors de l'homebrew, ce qui est totalement inutile. Les réponses que brew link libiconv
provoquent réellement le problème où clang devient confus et essaie de lire un fichier d’en-tête homebrew et d’être lié aux bibliothèques système. Les réponses qui suggèrent --use-system-libraries
sont pauvres, car nokogiri doit être lié à ses bibliothèques libxml2 et libxslt fournies, car les autres versions de ces bibliothèques sont incompatibles avec elle. Les réponses que vous voulez compiler à partir de sources sont simplement trop compliquées.
TL; DR:
UTILISATEURS DE RVM
Dans les anciennes installations RVM, il est possible que libiconv se cache dans vos répertoires rvm quelque part en conflit avec les bibliothèques de votre système. Voir https://stackoverflow.com/a/11809261/506908 pour plus d'informations.
UTILISATEURS MacPorts
Si vous avez /opt/local/lib/libiconv.dylib, nokogiri ajoute ce chemin à la liste des répertoires qu'il recherche et trouvera l'installation MacPorts similaire à la manière dont elle récupère l'homebrew libiconv et entre en conflit avec les bibliothèques système. Tu peux essayer:
Sudo port uninstall libiconv
Si cela échoue en raison de dépendances, vous pouvez essayer de créer un lien directement avec la version de MacPorts (non testé):
gem install nokogiri -- --with-iconv-dir=/opt/local
Vous devez mettre à niveau votre homebrew à la 0.9
puis suivez ces étapes
brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
Sudo make install
Sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
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 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
Vous devez vérifier la version de la bibliothèque de dossiers.
Celui-ci a fonctionné pour moi
Sudo env ARCHFLAGS = "- Arch x86_64" gem install nokogiri: 1.6.6.2 - --use-system-libraries --with-xml =/usr/local/Cellar/libxml2/2.9.3/--with-iconv- dir =/usr/local/Cellar/libiconv/1.14
Je me suis heurté à ça, ce matin ... après une mise à niveau vers Mavericks. Nous avons fait beaucoup de choses. Cependant, si quelqu'un a ce problème, voici certaines choses à essayer.
J'ai exécuté 'xcode-select --install' puis j'ai installé les outils de ligne de commande (surpris que cela ne se soit pas mis à jour sur la mise à niveau du système d'exploitation). J'ai couru 'rvm implode' (je le reconstruirai plus tard).
Nous avons rassemblé deux fichiers de sortie d'erreur:
~/.vagrant.d/gems/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out
~/.vagrant.d/gems/gems/nokogiri-1.6.3.1/ext/nokogiri/tmp/x86_64-Apple-darwin12.5.0/ports/libxml2/2.8.0/configure.log
Ce qui semblait indiquer que le compilateur c utilisait un paramètre surprenant.
J'ai couru 'env'
Sortie contenue:
...
CXX=/usr/local/opt/Apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/Apple-gcc42/bin/gcc-4.2
...
Ces fichiers n'existaient pas sur le système de fichiers ...
Après toutes ces modifications, on passe à une nouvelle fenêtre de terminal (donc tout était frais). L'installation de vagrant-berkshelf (qui installe à son tour le nokogiri) a bien fonctionné.
REMARQUE: lors de l'exécution de "env" dans la nouvelle fenêtre, il n'y avait plus de paramètre pour CC ou CXX ...
Je ne suis pas sûr de la clé, ni de l'ordre, mais nous avons essayé de recréer les parties qui semblaient jouer un rôle important dans la réussite de l'opération.
Quelques étapes simples à suivre avant de commencer à désinstaller et à installer quoi que ce soit. Vérifiez si vous avez CLT (outils de ligne de commande installés):
brew config
voir la version CLT ici si son installation ne nécessite pas de réinstallation.
Cela signifie que le problème est avec la permission que vous avez à réinstaller uniquement gem bundler faire ce n'est pas Sudo. Désinstallez bundler avec gem uninstall bundler
réinstaller le bundle de pierres précieuses gem install bundler
Le point le plus important ici est la permission sous laquelle la gem bundler est installée, elle ne devrait jamais être utilisée.
Selon la documentation, à partir de OSX 10.9 et Homebrew 9.5+, les outils de développement vous manquent probablement.
Si vous rencontrez des problèmes pour mentionner l'absence de libiconv, cela ressemble à ceci:
Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/Ruby-2.0.0-p0/bin/Ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Il vous manque alors probablement les bons outils de développement. C'est une solution vraiment facile:
brew unlink gcc-4.2 # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri
C’est vérifié s’il fonctionne sur le compilateur Clang d’OSX 10.9 w/xcode.
J'avais un problème similaire et la réponse acceptée fonctionnait pour moi. Maintenant, cependant, je vois un nouveau message d'erreur dans lequel une commande gmkdir
est manquante comme dans cette question:
Ce qui a bien fonctionné pour moi, c’est d’abord un petit nettoyage:
brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt
Puis brew unlink libiconv
et tout ce que vous devez dissocier (vérifiez auprès de brew doctor
). Ensuite, les deux lignes magiques (copiées à partir de la réponse liée):
brew install coreutils
gem install nokogiri
J'ai eu ce problème lorsque j'ai mis à niveau mon Mac OS vers Yosemite. J'ai pu résoudre ce problème en faisant:
xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri