Pourquoi manque-t-il l’installation de Nokogiri sur Mac OS avec libiconv?

J’ai essayé d’installer Nokogiri sur Mac OS 10.9.3 et quoi que j’essaye, l’installation finit par échouer 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 une grande partie de l’aide trouvée sur le Web, y compris la création et l’installation de libxml2 et libxslt à l’aide de brew et la construction de libiconv à partir des sources (comme décrit dans Installation de Nokogiri ), l’erreur rest la même.

En essayant d’exécuter l’installation pour Nokogiri, libxml2 et libxslt semblent être bien trouvés, mais pas libiconv.

Toute personne ayant une meilleure connaissance de ces choses sait-elle comment installer Nokogiri?

J’ai eu le même problème. Malheureusement, ” Installer Nokogiri ” ne couvre pas les problèmes Iconv. Voici comment j’ai résolu le problème.

Installez d’abord homebrew , cela vous facilitera la vie. Si vous l’avez déjà installé, assurez-vous de saisir les dernières formules en procédant comme suit:

 brew update 

Remarque : sous OSX 10.9+, vous devrez peut-être installer les outils de commande xCode pour vous permettre d’installer libiconv.

 xcode-select --install 

puis installez une nouvelle version de libiconv

 brew install libiconv 

puis liez vos nouvelles bibliothèques iconv:

 brew link libiconv 

puis installez votre gem

 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 nouvelles versions, mais le script d’installation par défaut semble avoir un 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 supérieure, alors je ne vous republierai que des étapes nécessaires.

Sur Mavericks (OSX 10.9+):

Installer les outils de ligne de commande Xcode:

 xcode-select --install 

puis installez votre gem:

 gem install nokogiri 

J’ai finalement réussi à résoudre ce problème. Aucune des solutions ci-dessus ne l’a complètement corrigée.

J’avais cette erreur en essayant d’ gem install nokogiri sur OSX Lion 10.7.2. Tout d’abord, cette erreur masque le problème réel en disant que libiconv est manquant, car vous obtiendrez la même erreur même si nokogiri ne peut pas trouver libxslt ou libxml2, ce qui dans mon cas, cela n’a pas été possible.

J’ai donc suivi les instructions sur http://nokogiri.org/tutorials/installing_nokogiri.html sous la section Homebrew (légèrement modifiée pour tenir compte d’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 depuis le source, il installe le dossier /include dans un endroit génial. Donc, vous devez spécifier la lib et include dossiers séparément comme ceci:

 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), alors j’ai essayé de spécifier les trois bibliothèques requirejses (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 autre erreur! 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 post miracle: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required -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 elles doivent être remplacées par les dernières versions du SDK Xcode. L’article l’explique mieux que je ne peux donc lire le lien ci-dessus pour des instructions spécifiques.

Une fois ceux-ci ont été 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 

à nouveau et tout allait bien. J’espère que ça aidera quelqu’un d’autre.

Juste en ajoutant ma voix à la foule, mais mkmf.log a dit quelque chose à propos de ne pas être capable de trouver des symboles pour 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 original, mais cela peut aider quelqu’un.

Note latérale: le nokogiri a été ma plus grande barrière à l’utilisation des applications de rbuy. 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 été à partir de ce fil pour installer avec succès nokogiri, en fixant manquant libiconv.

Installer Homebrew http://brew.sh/ Ou mettre à jour avec la commande ci-dessous

 brew update 

Installez libxml2 libxslt

 brew install libxml2 libxslt 

Lier à la fois libxml2 libxslt

 brew link libxml2 libxslt 

Si vous avez un avertissement à 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 cela sur Yosemite exécutant Ruby 2.1.4 en

  1. Assurez-vous d’avoir installé xCode 6.1, puis
  2. xcode-select --install , puis
  3. Dans l’AppStore, cliquez sur les mises à jour et installez la version la plus récente des outils de ligne de commande (ce que fait apparemment xcode-select --install – soupir)
  4. puis l’ bundle install fonctionné comme d’habitude.

J’ai également fait une brew install libiconv 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. Puis j’ai finalement trouvé la documentation iconv et cela a sauvé ma journée!

En regardant dans le fichier mkmf, il semble que nokogiri (ou gem, je ne sais pas) essaie de trouver des dépendances dans / op / local /. Pour moi, ce n’est pas la bonne voie pour les rechercher.

Obliger Nokogiri à trouver les bibliothèques au bon endroit (j’utilise le homebrew) a fait l’affaire:

 $ 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 a-t-il quelque chose à réparer dans le nokogiri …

HTH,

libiconv a été supprimé de Homebrew 0.9 Il est maintenant recommandé de comstackr libiconv à partir des sources, puis de référencer l’installation lorsque vous installez la gem nokogiri. Consultez les instructions d’installation de Nokogiri dans la section Homebrew 0.9 de la page d’installation de Nokogiri.

Recherchez le fichier mkmf.log dans le répertoire de construction de la gemme (par exemple, /Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log). Cela a beaucoup plus d’infos. Dans mon cas, quand j’ai tapé cela, c’était que Nokogiri ajoutait spécifiquement / opt / local / lib au chemin de recherche de la bibliothèque et GNU Backgammon y avait installé une libiconv incompatible.

En supposant que vous ayez installé libxml2 et libxslt avec MacPorts, vous pourriez toujours recevoir cette erreur en raison d’une non-concordance de l’ordre des chemins include et des chemins de liens utilisés par l’appel à have_func (‘iconv_open’, ‘iconv.h’)

Solution simple (patch): supprimez libiconv. * Dans / usr / local / lib

 $ 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, ceci est la solution pour homebrew et utilisation de gem install (appliquer les modifications dépend de votre version)

Cependant, si vous utilisez Gemfile et l’installation de bundle, vous devez appliquer la configuration de bundle avant d’installer, ici 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 

à nouveau, appliquer les modifications dépend de votre version

J’espère que ceci vous aidera.

crédit: https://gist.github.com/1344331

J’ai eu des problèmes similaires sur Mountain Lion. Il s’avère que j’avais déjà installé libiconv via le paquet rvm et ce 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 était une installation simple. Pas de gâchis avec les installations de brew / macports / source manuelle!

Vous pouvez aussi faire ça sur Mavericks:

gem install nokogiri – –use-system-libraries = true –avec-xml2-include = / Applications / Xcode.app / Contents / Développeur / Platforms / MacOSX.platform / Développeur / SDKs / MacOSX10.9.sdk / usr / include / libxml2

Assurez-vous juste d’avoir xcode installé

Je me battais avec Nokogiri pendant un certain temps aujourd’hui sur OS X 10.10 Yosemite

Mon environnement a été gâché pour une raison quelconque.

which bundle et which gem me donnait /usr/bin/bundle et /usr/bin/gem au lieu de ~/.rbenv/shims/gem

Ce qui m’a aidé à résoudre ce sudo rm -i /usr/bin/gem /usr/bin/bundle était sudo rm -i /usr/bin/gem /usr/bin/bundle

Après cela, j’ai: 1. retourné dans mon répertoire de projet 2. désinstallé le dépendant 3. réinstallé les bibliothèques dépendantes: a-t-il brew install libxml2 libiconv libxslt 4. installé ma version ruby ​​fraîche (avec rbenv) 5. did gem install bundler 6. et l’ bundle install fonctionné sans aucun problème.

Nokogiri allait bien après ça.

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 

Vous devez mettre à jour votre homebrew à 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 devriez vérifier la version de la bibliothèque de dossiers.

HOMEBREW UTILISATEURS

Solution correcte pour résoudre ce problème si vous utilisez l’homebrew:

 xcode-select --install 

Choisissez “Get Xcode” dans la boîte de dialog.

 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 avec les mises à niveau O / S ou les restaurations à partir de sauvegardes. 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 vers la corbeille et 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. Vous n’en avez pas besoin Et clang va effectivement chercher /usr/local/include/iconv.h sur /usr/include/iconv.h et va #define iconv_open sur libiconv_open mais ensuite sur /usr/lib/libiconv.dylib qui n’a pas libiconv_open qui est ce qui provoque les échecs de mkmf à trouver libiconv. Ce que vous devez faire est de supprimer la liaison de iconv.h pour que nokogiri ne le trouve pas.

Ensuite, construisez simplement le nokogiri normalement.

Pour les nouveaux utilisateurs, tout ce que vous devez faire est d’installer xcode avec xcode-select et installer nokogiri, mais si vous avez trouvé cette question, vous avez probablement une installation bâclée et pas une nouvelle installation de Mavericks.

Certaines des autres réponses sont définitivement incorrectes. La plupart d’entre eux tentent d’utiliser libiconv en homebrew, ce qui n’est absolument pas nécessaire. Les réponses qui brew link libiconv sont en réalité à l’origine du problème où clang devient confus et tente de lire un fichier d’en-tête homebrew et de créer un lien avec les bibliothèques système. Les réponses suggérant --use-system-libraries sont médiocres, car nokogiri doit être lié à ses bibliothèques libxml2 et libxslt intégrées, car les autres versions de ces bibliothèques ne sont pas compatibles. Les réponses que vous voulez comstackr à partir de sources sont désespérément trop compliquées.

TL; DR:

  • Mettre à niveau et / ou réparer votre installation Xcode
  • Dissociez votre libiconv homebrew depuis que vous tentez d’utiliser ce qui ne pose que des problèmes
  • Construire le nokogiri normalement

UTILISATEURS RVM

Les anciennes installations RVM peuvent avoir un libiconv caché dans vos répertoires RVM quelque part en conflit avec vos bibliothèques système. Voir https://stackoverflow.com/a/11809261/506908 pour plus d’informations.

MacPorts UTILISATEURS

Si vous avez /opt/local/lib/libiconv.dylib, alors nokogiri ajoute ce chemin à la liste des répertoires qu’il recherche et il trouvera l’installation MacPorts similaire à la manière dont il récupère la libiconv de l’homebrew et est 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 une liaison directe avec la version MacPorts (non testée):

 gem install nokogiri -- --with-iconv-dir=/opt/local 

Celui-ci a travaillé pour moi

sudo env ARCHFLAGS = “- arch x86_64” install nokogiri: 1.6.6.2 – –use-system-libraries –with-xml = / usr / local / Cellar / libxml2 / 2.9.3 / –with-iconv- dir = / usr / local / Cave / libiconv / 1.14

Je suis tombé dessus ce matin … après une mise à niveau vers Mavericks. Nous avons fait beaucoup de choses. Cependant, si quelqu’un a ce problème, voici quelques choses à essayer.

J’ai lancé ‘xcode-select –install’, puis j’ai installé les outils en ligne de commande (surpris de ne pas avoir mis à jour le système d’exploitation). J’ai couru ‘rvm implode’ (je le reconstruirai plus tard).

Nous avons reconstitué 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 tous ces changements, passer à une nouvelle fenêtre de terminal (donc tout était frais). L’installation de vagrant-berkshelf (qui à son tour installe des nokogiri) a bien fonctionné.

NOTE: 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 certain de l’essentiel ou de l’importance de la commande, mais j’ai essayé de recréer les éléments qui semblaient jouer un rôle dans la réalisation de cet objective.

Selon la documentation, à partir de OSX 10.9 et Homebrew 9.5+, vous manquez probablement les outils de développement.

Installation de Nokogiri

Dépannage

Si vous rencontrez des problèmes en mentionnant 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 *** 

Ensuite, vous manquez probablement les bons outils de développement. C’est une solution très simple:

 brew unlink gcc-4.2 # you might not need this step gem uninstall nokogiri xcode-select --install gem install nokogiri 

Ceci est vérifié en travaillant sur OSX 10.9 avec le compilateur clang de xcode.

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 

J’ai eu un problème similaire et la réponse acceptée a fonctionné pour moi. Maintenant, cependant, j’ai vu un nouveau message d’erreur où une commande gmkdir est manquante comme dans cette question:

gem install nokogiri -v ‘1.5.11’ a échoué pour faire: / usr / local / bin / gmkdir: Pas de fichier ou répertoire de ce type

Ce qui a fonctionné pour moi était d’abord un petit nettoyage:

 brew uninstall libiconv brew uninstall libxml2 brew uninstall libxslt 

Et ensuite, brew unlink libiconv et tout ce que vous avez besoin de dissocier (consultez le brew doctor brew unlink libiconv brew doctor ). Ensuite, les deux lignes magiques (copiées à partir de la réponse liée):

 brew install coreutils gem install nokogiri 

Assurez-vous tout d’abord de suivre le guide d’installation sur nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html

Après avoir suivi le guide, j’avais toujours ce problème. Voici comment je l’ai résolu:

Tout d’abord, j’ai installé iconv en utilisant homebrew: brew install iconv

Puis j’ai désinstallé ruby, heureusement c’est très facile avec rvm:

 rvm uninstall 1.9.2 

Ensuite, j’ai dû réinstaller ruby ​​avec les options suivantes:

 CC=gcc-4.2 rvm install 1.9.2-p290 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1 

Puis je crée un gemset avec la nouvelle version de ruby:

 rvm use 1.9.2@coolproject 

Ensuite, je peux enfin installer nokogiri comme ceci:

 gem install nokogiri -v=1.4.4 -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 

Dans mon cas, (comme avec scotchi) la construction a échoué à cause d’une bibliothèque iconv incompatible dans / opt / local / lib. Par défaut, le processus de création de NOKOGIRI examine d’abord / opt / local. Pour le forcer à utiliser un répertoire d’installation différent, / usr / local par exemple, faites:

 gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include 

Cet article de blog propose d’installer manuellement libiconv.

Par la suite, nokogiri peut être installé avec un certain nombre de commutateurs lui indiquant où trouver libiconv (voir l’article sur le blog).

En guise de note: après l’installation de nokogiri, j’ai réussi à installer gollum (l’installation a également échoué car elle n’a pas pu trouver iconv). Maintenant, je suis toujours confronté à des problèmes, car lorsque je démarre gollum, Python plante.

 $ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247 $ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so* 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so* $ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so* 

REMARQUE: Le fichier /lib/iconv/iconv.so manquant dans la version 2.0.0-p247 présente dans l’installation des gems 2.0.0-p0.

 $ rbenv version 2.0.0-p247 (set by /home/XXX/tmp/.ruby-version) $ rbenv which gem /home/XXX/.rbenv/versions/2.0.0-p247/bin/gem $ gem --version 1.8.25 $ rbenv which pry /home/XXX/.rbenv/versions/2.0.0-p247/bin/pry $ pry [1] pry(main)> require 'iconv' LoadError: cannot load such file -- iconv/iconv.so from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require' 

Copiez le fichier sur

 $ pushd ~/.rbenv/versions/ $ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/ 

MAINTENANT ÇA MARCHE!

 $ pry [1] pry(main)> require 'iconv' => true 

J’ai dû installer gcc avant de ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

J’ai suivi les instructions de la page d’installation de nokogiri et installé des outils xcode. Mais cela n’a toujours pas fonctionné pour moi.

Ensuite, j’ai vu que la commande brew install libxml2 libxslt les éléments suivants (entre autres choses):

 To allow the nokogiri gem to link against this libxslt run: gem install nokogiri -- --with-xslt-dir=/usr/local/opt/libxslt 

Donc, je lance ceci et nokogiri a été installé avec succès.

Cela fonctionne pour moi:

 gem install nokogiri -- --use-system-libraries 

Si vous utilisez Bundler, dites-lui d’utiliser l’option:

 bundle config build.nokogiri --use-system-libraries bundle install 

ref