Nokogiri: libiconv est manquant

Créé le 3 avr. 2011  ·  109Commentaires  ·  Source: sparklemotion/nokogiri

Nous exécutons Ruby 1.8.7 (via RVM) sur OS X 10.6.6. Essayer d'installer nokogiri 1.4.4 à l'aide du bundler entraîne toujours l'erreur suivante :

Installing nokogiri (1.4.4) with native extensions /Users/administrator/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems/installer.rb:533:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/Users/administrator/.rvm/rubies/ruby-1.8.7-p302/bin/ruby extconf.rb 
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
[…]

En suivant les instructions ici sur le wiki ainsi que sur le net, nous avons utilisé MacPorts pour installer libxml2 et libxslt , ce qui donne la situation suivante :

sudo port install libxml2 libxslt
Password:
Error: Cannot install libxml2 for the arch(s) 'x86_64' because
Error: its dependency libiconv is only installed for the archs 'i386 ppc'.
Error: Unable to execute port: architecture mismatch

Nous avons construit libxml2 et libxslt partir des sources et essayé à la fois d'installer le gem avec les drapeaux pour les MacPorts et la construction comme décrit dans le wiki ainsi que quelques variantes trouvées en ligne. — Les résultats restent les mêmes. Nous avons même téléchargé la gemme, modifié extconf.rb comme suggéré ici : https://github.com/tenderlove/nokogiri/issues#issue/381 et l'avons compilé localement, mais le résultat final est le même.

Que nous manque-t-il ? Nous sommes à peu près coincés avec cette situation.

Tous les 109 commentaires

J'ai posé la même question et j'ai eu cette réponse :

Installez MacPorts : http://www.macports.org
Ajoutez /opt/local/bin à votre PATH (bashrc ou zshrc ou tout ce que vous utilisez).
installation du port sudo libxml2 et installation du port sudo libxslt
Ensuite, sudo gem install nokogiri --no-rdoc --no-ri devrait fonctionner sans problème. C'est tout ce que j'avais à faire pour le système ruby ​​(1.8.7 sur OSX 10.6) et 1.9.2 via rvm.

J'avais les mêmes problèmes sur 10.6. J'ai réinstallé MacPorts, installé à nouveau le port libxml2 et libxslt et maintenant je ne rencontre plus ces problèmes.

En supposant que vous ayez installé libxml2 et libxslt avec MacPorts, vous pourriez toujours obtenir cette erreur en raison d'une incompatibilité de l'ordre des chemins d'inclusion et des chemins de lien utilisés par l'appel à have_func('iconv_open', 'iconv.h')

Solution simple (correctif) : supprimez libiconv.* dans /usr/local/lib

Suggestion : faites en sorte que extconf.rb effectue une vérification légèrement plus sophistiquée des bibliothèques iconv réellement installées et donne à l'utilisateur un meilleur indice. Dans ce cas, libiconv n'est PAS manquant. Il y a en fait DEUX libiconvs, l'en-tête correct a été compilé et une ancienne bibliothèque a été liée. Cela semble être un problème très courant pour lequel le message d'erreur du fichier d'installation pourrait apporter un peu plus d'aide.

Et je pense que cela pourrait être un problème avec mkmf et la façon dont il gère les chemins de bibliothèque? La vérification de compilation défaillante pour moi était:

```"gcc -o conftest -I. -I/usr/local/lib/ruby/1.8/i686-darwin10.3.0 -I. -III/opt/local/include -III/usr/local/include -III /usr/local/include -III/usr/include -III/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/usr/local/include/libxml2 -II/opt/local/include -II/usr/local/include -II/usr/local/include -II/usr/include -II/usr/include/libxml2 -I/opt/local/include -I/usr /local/include -I/usr/local/include -I/usr/include -I/usr/include/libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE=1 -fno-common -pipe -fno-common -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -L. -L/usr/local/lib -L/opt/local/lib -L/usr/local/lib -L /usr/lib -L. -lruby-static -lpthread -ldl -lobjc "
Symboles non définis pour l'architecture x86_64 :
"_libiconv_open", référencé depuis :

Note the compile stage starts with /opt/local/include, but the link stage starts with /usr/local/lib, which is where the old version was

J'utilise Lion et homebrew. Pour moi, cela a fait l'affaire:

brew install libiconv
brew link libiconv

Dans mon cas (Migration vers OS X Lion), pour régler le problème, j'ai nettoyé macports :

port -qv installed > myports.txt
sudo port -fp uninstall --follow-dependents installed
sudo port clean all

Plus de détails : http://trac.macports.org/wiki/Migration

+1 à ce que jfahrenkrug a dit. Le guide d'installation sur http://nokogiri.org/tutorials/installing_nokogiri.html , section homebrew devrait probablement être mis à jour ;

brasser installer libxml2 libxslt
brasser le lien libxml2 libxslt

pour

brasser installer libxml2 libxslt libiconv
brasser le lien libxml2 libxslt libiconv

Le correctif de jfahrenkrug a également fonctionné pour moi

+1 fonctionne pour moi

J'ai suivi les instructions pour construire libxml2 et libxslt à partir de brew. Je ne peux pas construire de nokogiri.

J'obtiens une erreur lorsque j'essaie "brew install libiconv":

$ brasser installer libiconv
Erreur : Aucune formule disponible pour libiconv
Apple distribue libiconv avec OS X, vous pouvez le trouver dans /usr/lib.
Certains scripts de construction ne parviennent pas à le détecter correctement, veuillez vérifier
formules pour les solutions.

Je suis sur une nouvelle installation de Snow Leopard. Je préfère ne pas utiliser MacPorts.

S'il vous plaît aider.

@jseigler J'utilise brew 0.8.1 et je peux installer libiconv sans problème. Essayez de mettre à jour l'infusion ?

J'ai eu le même problème que @jseigler. J'utilise brew 0.9 sur OS X 10.7.3.

Le téléchargement de libiconv et la compilation ont fonctionné manuellement.
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz

Si vous savez comment installer Nokogiri avec les bibliothèques brew 0.9, faites-le moi savoir - je mettrai à jour la documentation d'installation. En attendant, cependant, en tant qu'utilisateur principalement de Linux, je crains de ne pouvoir être d'une grande aide.

@tenderlove , des idées ? Vous <3 macs. :) :) :)

En utilisant brew 0.9 sur OSX 10.7.3, les éléments suivants ont fonctionné :

brasser installer libxml2 libxslt
brasser le lien libxml2 libxslt

Installez libiconv à partir des sources :
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
Fabriquer
sudo faire installer

Ensuite, installez nokogiri :
gem install nokogiri --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 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib =/usr/local/Cellar/libiconv/1.13.1/lib

@ brennenf

Bon travail. Cela l'a fait pour moi aussi.

Instructions publiées sur nokogiri.org :

http://nokogiri.org/tutorials/installing_nokogiri.html#homebrew_09

Merci à tous.

@brennenf Merci pour cette ligne
gem install nokogiri --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 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib =/usr/local/Cellar/libiconv/1.13.1/lib

@brennenf votre correctif me donne un joli "nokogiri installé avec succès-1.5.2" mais lorsque j'exécute l'installation du bundle dans mon application rails, il échoue toujours sur : "Une erreur s'est produite lors de l'installation de nokogiri (1.5.2), et Bundler ne peut pas continuer.
Assurez-vous que gem install nokogiri -v '1.5.2' réussit avant de regrouper." Notez que "gem install nokogiri -v '1.5.2" échoue également.

@ttringas - veuillez envoyer un e-mail à nokogiri-talk. ce problème concerne nokogiri 1.4.4 et est fermé depuis des mois.

Salut des mises à jour sur Mountain Lion?
Je n'arrive pas à faire l'installation.

J'ai mis à jour le chemin mentionné sur la page d'installation de 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

c'est ce que j'ai en retour : https://gist.github.com/3186643

@polarblau regarde qui a des problèmes maintenant :D (moi)

Cela pourrait aider, mais il semble que "l'écosystème" RVM semble bogué après la mise à jour vers Mountain Lion. Je supprime le .rvm et installe rvm en utilisant http://unfiniti.com/software/mac/jewelrybox/ et maintenant cela fonctionne mais j'ai un avertissement qui dit :
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

Pareil ici, la réinstallation de ruby ​​a fait l'affaire (je ne suis pas vraiment surpris - c'est un écueil assez courant)

@polarblau , trop tard ! j'ai déjà lu ça ;)

Pour que l'installation fonctionne sur mon Mountain Lion récemment mis à niveau, j'ai dû supprimer mes packages rvm précédemment installés (situés dans $rvm_path/usr), reconstruire ruby ​​1.9.3, puis gem install nokogiri réussi. Voir https://rvm.io/packages/

Je suis sur Mountain Lion. La réinstallation de Ruby a fonctionné pour moi.

vérification de libxml/parser.h... non

libxml2 est manquant.

J'ai trouvé qu'une étape supplémentaire était nécessaire pour résoudre ce qui précède pour Homebrew 0.9 sur Mac OS X 10.8 Mountain Lion et c'est de créer un lien "/usr/bin/gcc-4.2":

brasser installer libxml2 libxslt
brasser le lien 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
Fabriquer
sudo faire installer
sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
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

brax4444 merci beaucoup, vous êtes une bouée de sauvetage !! A parfaitement fonctionné avec l'ajout d'un sudo sur votre dernière commande à cause de l'erreur :

ERREUR : lors de l'exécution de gem ... (Errno::EPERM)
Opération non autorisée - ~/.rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.5/.autotest

brax4444 est l'homme ! Merci

Je me demande si quelqu'un peut aider un débutant :

Running Mountain Lion 10.8.2 avec Homebrew.

Commencé avec nokogiri 1.5.2 - manquait le libiconv typique.

Entre ce fil, spécifiquement Brax4444 & le tutoriel d'installation sur nokogiri : http://nokogiri.org/tutorials/installing_nokogiri.html pour Homebrew .9 il me reste le FUBAR suivant :

J'ai maintenant nokogiri 1.5.5 où les rails recherchent 1.5.2

Toujours incapable de résoudre le problème de libiconv malgré d'innombrables heures.

Impossible d'exécuter les commandes rails en raison d'une gemme manquante > nokogiri : 1.5.2

Essayez d'installer la gemme (qui serait la 1.5.5) ou les nouveaux rails (j'essaie n'importe quoi à ce stade... revenez maintenant avec l'erreur suivante : ERREUR : lors de l'exécution de la gemme... (Errno::EPERM)
Opération non autorisée - /usr/local/rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.5/.autotest

Quelqu'un peut-il me sauver ? Je dois remettre une application d'ici demain.

Bonjour!

Merci d'avoir posé cette question! Votre demande d'assistance sur Nokogiri ne restera pas sans réponse !

Cependant, ce problème est clos et les problèmes Github de Nokogiri sont réservés au signalement de bogues ou à la soumission de correctifs. Si vous posez votre question sur la liste de diffusion, l'équipe Nokogiri promet que quelqu'un vous fournira une réponse en temps opportun.

Si vous souhaitez en savoir plus sur la justification de cette politique par l'équipe Nokogiri, veuillez vous rendre sur http://bit.ly/nokohelp.

Merci beaucoup pour votre compréhension ! Et merci d'utiliser Nokogiri.

brax4444, merci beaucoup, vos étapes m'ont aidé à résoudre un problème similaire lors de l'installation de la gemme pg.

Les instructions sur la page http://nokogiri.org/tutorials/installing_nokogiri.html sont désormais obsolètes en raison de l'installation groupée de versions plus récentes (actuellement libxml2 à 2.9.0 et libxslt à 1.1.28).

@Winstons

Merci pour votre commentaire, mais ce sujet est clos depuis un bon moment.

Si vous avez une mise à jour pour les documents d'installation de nokogiri, vous pouvez soit envoyer une demande d'extraction à :

https://github.com/sparklemotion/nokogiri.org-tutorials

ou vous pouvez énoncer plus clairement le problème et les solutions (bundler n'installe pas libxml2 ou libxslt ... voulez-vous dire brew? ou mac ports? ou ... ?) dans un nouveau problème et nous y répondrons quand nous le pourrons confirmer indépendamment.

Merci d'utiliser Nokogiri !

@flavorjones Désolé ! Je vais débourser.

Merci d'avoir co-écrit Nokogiri.

J'avais également besoin d'installer XCode pour que cela fonctionne.

J'avais besoin d'installer des outils de développement en ligne de commande.

@dentarg Merci, j'ai eu le même problème, après la restauration de mon Mac, les outils de développement en ligne de commande n'étaient pas installés.
Faites-le avec cette commande 'xcode-select --install'

utilisez https://github.com/Homebrew/homebrew-dupes/blob/master/libiconv.rb

brew tab homebrew/dupes
brasser installer libiconv

et peut-être ceci :
bundle config build.nokogiri --use-system-libraries

mais je ne sais pas si cela fonctionne

Merci @ brax4444 , vos conseils ont fonctionné pour moi aussi !

J'ai utilisé l'iconv natif. Vous n'avez pas besoin de lier libxml2/libxslt.

brew install libxml2 libxslt
gem install nokogiri -- \
    --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib \
    --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 \
    --with-iconv-lib=/usr/lib \
    --with-iconv-include=/usr/local/include 

Merci @patricksereno.

bundle config build.nokogiri --use-system-libraries
cela a fonctionné pour moi

Merci brax4444 ! Cette ligne (lien gcc) l'a fait pour moi aussi !

VOIR LES INSTRUCTIONS MISES À JOUR : https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

REMARQUE : si vous parcourez tous ces messages un par un en essayant tout, alors VOUS LE FAITES MAL. Tous les conseils pour "brew link" (y compris ceux post) sont de mauvais conseils. Tous les conseils à "--use-system-libraries" sont également de mauvais conseils. STAAAHHHHP. Passer à la fin.

je crois que cela a fonctionné pour moi:

brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local

Le point important ici est que libiconv doit être 'brew link'd into /usr/local/include. Avec le robinet 'dupes', il va se plaindre de remplacer une bibliothèque système, vous devez donc la --force . Ensuite, il vous suffit de dire à nokogiri de rechercher /usr/local pour rechercher le chemin iconv à transmettre à la libxml2 intégrée lors de sa construction. En utilisant --use-system-libraries , les gens contournent le besoin de trouver cette bibliothèque afin de la transmettre à la construction interne de libxml2.

Une façon de résoudre ce problème serait d'avoir homebrew ajouter une configuration pkg-config pour libiconv, depuis lors, le nokogiri extconf.rb sera capable de le trouver.

Une autre façon serait de coder en dur /usr/local/include comme chemin de recherche ici :

https://github.com/sparklemotion/nokogiri/blob/983ff1f2962c7f9fd20a6fc4c18784eccfff21c0/ext/nokogiri/extconf.rb#L132 -L133

J'ai essayé de comprendre comment extraire /usr/local/include d'un chemin dans mkmf de ruby ​​et merde si je peux comprendre comment faire cela. Les couches d'indirection dans mkmf sont trop profondes. La méthode find_header() dans mkmf peut certainement trouver iconv.h, mais je ne sais pas comment extraire les informations sur le chemin dans lequel il le trouve. Ce serait en fait le correctif correct pour nokogiri afin de trouver le fichier d'en-tête dans de la même manière que mkmf peut trouver le fichier d'en-tête.

Il semble que le fait que nokogiri ne puisse pas trouver un simple fichier d'en-tête dans /usr/local/include sans avoir besoin d'un pkg-config externe est cassé. Je peux voir à quel point le codage en dur du chemin est moche, mais je ne sais pas comment demander à mkmf dans quel répertoire find_header trouve l'en-tête ...

Il semble également qu'il y ait un bogue ici où dir_config() peut renvoyer un tableau de chemins séparés par ':' au lieu d'un tableau de deux chemins, mais cela ne semble pas avoir d'incidence sur la résolution de ce problème :

https://github.com/sparklemotion/nokogiri/blob/983ff1f2962c7f9fd20a6fc4c18784eccfff21c0/ext/nokogiri/extconf.rb#L126 -L130

@lamont-granquist excellentes instructions, encore mieux si vous changez d'onglet en tapant :-)

@ericbrooke lol, j'ai copié ça d'une affiche précédente... corrigé maintenant...

Je pense que j'ai essayé toutes les commandes mentionnées dans ce post et que je rencontre toujours ceci:

sudo 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-lib=/usr/lib --with-iconv-include=/usr/local/include/
Building native extensions with: '--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-lib=/usr/lib --with-iconv-include=/usr/local/include/'
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.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-lib=/usr/lib --with-iconv-include=/usr/local/include/
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
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.

Je n'ai aucune idée de la raison pour laquelle iconv.h est découvert, mais pas iconv_open() (c'est défini dans ce fichier). J'ai vu que quelqu'un a rencontré exactement le même problème récemment - http://stackoverflow.com/questions/24735534/nokogiri-install-fails-iconv-doesnt-work-osx

Quelqu'un a-t-il vu ce problème ?

VOIR LES INSTRUCTIONS MISES À JOUR : https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

@Reinmar pouvez-vous essayer ce que j'ai suggéré. En particulier:

  1. brew link libiconv --force puis validez que ls -la /usr/local/include/iconv.h est présent
  2. validez également ls -la /usr/local/lib/libiconv.dylib est là
  3. puis simplement : gem install nokogiri -- --with-iconv-dir=/usr/local

Tous les chemins que vous utilisez pour accéder à des répertoires versionnés au plus profond de "Cellar" d'homebrew sont un peu horribles et fragiles et je ne suis pas trop surpris que cela ne fonctionne pas correctement.

J'ai utilisé ces instructions http://nokogiri.org/tutorials/installing_nokogiri.html afin que les chemins soient similaires (les versions diffèrent).

piotrus<strong i="7">@macus</strong> ~> brew link libiconv --force
Warning: Already linked: /usr/local/Cellar/libiconv/1.14
To relink: brew unlink libiconv && brew link libiconv
piotrus<strong i="8">@macus</strong> ~> ls -la /usr/local/include/iconv.h
lrwxr-xr-x  1 piotrus  admin  39 Jul 29 19:47 /usr/local/include/iconv.h -> ../Cellar/libiconv/1.14/include/iconv.h
piotrus<strong i="9">@macus</strong> ~> ls -la /usr/local/lib/libiconv.dylib
lrwxr-xr-x  1 piotrus  admin  42 Jul 29 19:47 /usr/local/lib/libiconv.dylib -> ../Cellar/libiconv/1.14/lib/libiconv.dylib
piotrus<strong i="10">@macus</strong> ~> gem install nokogiri -- --with-iconv-dir=/usr/local
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
piotrus<strong i="11">@macus</strong> ~> sudo gem install nokogiri -- --with-iconv-dir=/usr/local
Password:
Building native extensions with: '--with-iconv-dir=/usr/local'
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-iconv-dir=/usr/local
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

Je vais peut-être essayer de mettre à jour Ruby/gem... :| C'est une supposition aveugle cependant.

Ok... La mise à jour gem n'a pas aidé. Ensuite, après avoir installé rvm (mais avant de mettre à jour Ruby de 2.0.0 à 2.1.*), j'ai décidé de redémarrer le terminal et par erreur je suis passé de iterm au terminal standard et... l'installation de nokogiri a fonctionné avec le même commande qui n'avait pas fonctionné auparavant. Donc, soit je devais redémarrer le terminal (bien que j'utilisais plusieurs onglets dans iterm auparavant), soit c'était un problème causé par xterm. Aucune idée, mais peut-être que ça aidera quelqu'un.

en plus de la réponse de @lamont-granquist, vous pouvez ignorer l'installation de la gemme si vous utilisez bundle et exécutez :

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

Après avoir suivi les instructions de @lamont-granquist :

brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local

Et rencontrant le même problème que @Reinmar , j'ai trouvé une suggestion sur StackOverflow et l'ai combinée avec les autres suggestions ici, ce qui a donné:

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 sudo gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2

Cela a finalement fonctionné pour moi, j'espère que cela vous aidera @Reinmar . Pourquoi cela fonctionne me dépasse, _[ commentaires restreints sur l'écosystème fermé d'Apple ici] _. Merci à tous pour le partage de vos méthodes.

J'ai dû arracher le brassage maison et tous les brassages le réinstallent à partir de zéro, puis cela a fonctionné

@doublerebel , je pense que vous devrez peut-être réinstaller xcode et/ou utiliser xcode-select. ce que tu as fait est de toute façon confus...

Il semble qu'avec la version actuelle de l'homebrew, j'ai pu me contenter d'une version un peu simplifiée de ce que @lamont-granquist a proposé :

brew tap homebrew/dupes
brew install libiconv
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local/opt/libiconv

Non brew link --force libiconv ...

cela a du sens @jacobvosmaer , les docs devraient probablement être mis à jour pour l'utiliser.

(abandonnez probablement le -v 1.6.3.1, cependant)

je mettrais à jour les docs mais je suis distrait en ce moment avec d'autres codages...

Après une journée entière à travailler sur ce problème, il convient de mentionner que la solution @doublerebel ci-dessus est la première chose à travailler

VOIR LES INSTRUCTIONS MISES À JOUR : https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

cela pourrait aider les utilisateurs avec Xcode 5.1.1 :

 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

VOIR LES INSTRUCTIONS MISES À JOUR : https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550

De plus, je suggérerais de s'assurer que Xcode 5.1.1 est installé (et/ou de le réinstaller), puis de réinstaller les "Outils de ligne de commande pour Xcode" ici : https://developer.apple.com/downloads/

Alors fais:

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv

Les mises à jour et les restaurations de Mac OSX semblent jeter Xcode et homebrew pour une raison quelconque. J'aime aussi le pointer vers /usr/local/opt/libiconv mieux que de forcer le lien vers /usr/local/include.

@lamont-granquist Merci pour vos solutions. J'ai appliqué chacun d'entre eux et le vôtre est la chose qui fonctionne finalement pour moi.

Exécuter 'brew uninstall libxml2 libxslt' puis 'sudo gem install nokogiri' l'a corrigé pour moi

En utilisant RVM et en créant un nouvel ensemble de gemmes, j'ai dû faire ce qui suit :

brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv

@lamont-granquist Merci beaucoup pour le correctif. A travaillé pour moi.

@lamont-granquist @ericbrooke merci. ça l'a tué.

EDIT : INSTRUCTIONS ENCORE PLUS SIMPLES : https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -54091434

Donc fusionner les bons morceaux de la question stackoverflow sur cette réponse :

Exécutez ceci pour installer les derniers outils de ligne de commande Xcode et Xcode (sélectionnez « Obtenir Xcode » dans la boîte de dialogue) :

sudo xcode-select --install

Puis mettez à jour libiconv dans homebrew :

brew tap homebrew/dupes
brew update
brew uninstall libiconv
brew install libiconv

L'installation du nokogiri :

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

Cela devrait fonctionner pour tout le monde sur 10.9 + homebrew

j'aimerai avoir des avis dessus ^^^

a fonctionné pour moi, merci!

-Chris

Le jeudi 28 août 2014 à 16h40, lamont-granquist [email protected]
a écrit:

j'aimerai avoir des avis dessus ^^^


Répondez directement à cet e-mail ou consultez-le sur GitHub
https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53794057
.

Par curiosité, à quoi sert brew uninstall libiconv ? Cela implique-t-il que vous avez déjà installé une libiconv d'une manière ou d'une autre ?

@knu oui, cela implique que vous utilisez Mac OsX et que vous avez installé libiconv via Homebrew et non MacPorts. Ces deux éléments sont des gestionnaires de packages. Si vous ne savez pas si brew est installé, tapez simplement brew dans le terminal, si vous obtenez cette réponse :

Example usage:
  brew [info | home | options ] [FORMULA...]
  brew install FORMULA...
  brew uninstall FORMULA...
  brew search [foo]
  brew list [FORMULA...]
  brew update
  brew upgrade [FORMULA...]
  brew pin/unpin [FORMULA...]

Troubleshooting:
  brew doctor
  brew install -vd FORMULA
  brew [--env | config]

Brewing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
  open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook

Further help:
  man brew
  brew home

vous savez que l'homebrew est installé.

brew list

affichera tous les packages que vous avez installés, y compris libiconv

@ericbrooke Je veux dire, je n'ai pas vu l'intérêt de faire brew uninstall libiconv juste après brew tap homebrew/dupes quand libiconv ne serait trouvé qu'après avoir tapé dupes parce qu'il n'est pas dans le repo standard. Est-ce là juste au cas où, comme lorsque votre installation homebrew est en quelque sorte cassée ?

De plus, comme vous le savez de la présence de libiconv dans "dupes", iconv fait partie d'OS X + Xcode que vous ne devriez pas avoir besoin d'ajouter via brew.

Je n'utilise pas Homebrew, mais Homebrew ne devrait rien toucher sous /usr/{include,lib}, n'est-ce pas ? Ou est-ce que la réinstallation de libiconv via brew est une tentative de récupération de ceux qui ont été cassés ?

Sur un nouveau MacBook Pro avec vanilla Mountain Lion + Xcode + Outils de ligne de commande installés, je vois /usr/include/iconv.h et /usr/lib/libconv.so là, donc je me demandais quelle était la cause de l'absence de ceux-ci les fichiers pourraient être.

@lamont-granquist merci.

J'ai fait ce que vous avez indiqué. J'ai rencontré un problème d'autorisation sur :
Vous n'avez pas les droits d'écriture pour le répertoire /Library/Ruby/Gems/2.0.0.

Apparemment, j'ai besoin de réparer mon rvm et après l'étape suivante, il a été installé et continue le processus d'installation de mon bundle.
installation rvm 2.1.2
rvm utiliser 2.1.2
mise à jour de la gemme --système

@knu ouais chaque fois que je mets à jour le système d'exploitation ou que je restaure à partir de la machine à remonter le temps, il semble que l'homebrew soit détruit et je dois tout réinstaller. ces instructions sont aussi pessimistes que possible. si quelqu'un a une installation propre et saine de xcode et que libiconv est installé correctement dans homebrew, la dernière commande d'installation de gemme est tout ce qui devrait être nécessaire.

Donc, il s'avère que /usr/local/include/iconv.h va #définir iconv_open à libiconv_open et pour une raison quelconque, clang récupère le fichier d'en-tête homebrew dans /usr/local/include sur /usr/include puis essaie de lier contre /usr/lib/libiconv.dylib. L'astuce consiste à supprimer le fichier d'en-tête iconv.h créé en forçant la liaison à libiconv.

TL; DR : les instructions préalables sur la manière de "résoudre" ce problème (y compris le mien) l'aggravent.

Donc, les instructions à jour sur la façon de réparer votre installation mac :

Assurez-vous que Xcode et les utilitaires de ligne de commande sont correctement installés. Cela corrige les problèmes où je n'avais pas de fichier d'en-tête /usr/include/iconv.h. Sélectionnez "Obtenir Xcode" dans la boîte de dialogue :

sudo xcode-select --install

Vous voudrez peut-être mettre à jour homebrew et libiconv au cas où il serait obsolète (et au cas où votre libiconv dans homebrew aurait été installé il y a très, très longtemps). Ceci est probablement entièrement facultatif puisque nous ne ferons plus du tout de lien avec l'homebrew libiconv maintenant :

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv

Ne liez pas libiconv, afin qu'il ne remplace pas le système libiconv (si cela vous donne 'no such keg' c'est bien, toute autre erreur et vous voudrez probablement revenir en arrière et mettre à jour homebrew et libiconv):

brew unlink libiconv

Construire des nokogiri :

gem install nokogiri

@lamont-granquist Merci beaucoup !!

@lamont-granquist Je ne sais pas pourquoi, mais dans votre dernier commentaire, gem install nokogiri n'a pas fonctionné pour moi.
Au lieu de cela, après avoir suivi toutes les étapes telles que :

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
brew unlink libiconv

gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv a fonctionné pour moi.

Je suis sur 10.9, avec rvm, si cela peut aider.

@lamont-granquist Merci pour la super enquête ! Je pense que je vais essayer de reproduire le problème et de trouver un "correctif" pour cela.

@SeanWangDev quelque part, vous avez un autre iconv.h qui est récupéré en premier et utilisé. Ce pourrait être celui de MacPorts au lieu de celui de Homebrew.

Oui je crois bien. Il y en a un à

/usr/local/Cellar/libiconv/1.14/include/iconv.h

un autre à

/usr/include/iconv.h

La dernière est une version précédente.
Merci @lamont-granquist

/usr/include/iconv.h est bien, cela fait partie de Xcode, le premier est celui de l'homebrew qui est caché dans la « cave », ce qui est également bien. S'il n'y a rien dans /opt/local/include ou autre, alors je suppose que /usr/lib/libiconv.dylib est endommagé d'une manière ou d'une autre?

@lamont-granquist C'est un peu hors de ma profondeur maintenant. Comment pouvons-nous savoir que libiconv.dylib est endommagé ?
Quand je fais ls -al /usr/lib/libiconv* , le résultat est ceci

xxxx  1 xxx  xxx       16 10  5  2013 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
xxxx  1 xxx  xxx  2088992 10  5  2013 /usr/lib/libiconv.2.dylib
xxxx  1 xxx  xxx       20 10  5  2013 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib

Oui, ça a l'air bien, c'est le mien :

% ls -al /usr/lib/libiconv*
lrwxr-xr-x  1 root  wheel       16 Feb 26  2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x  1 root  wheel  2088992 Feb 26  2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x  1 root  wheel       20 Feb 26  2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib

Qu'en est-il de /opt/local/lib/libiconv.dylib ou /opt/local/include/iconv.h ? L'un ou l'autre pourrait causer des problèmes.

@lamont-granquist
Non, je n'ai pas de répertoire /opt/. Est-ce ce que nous recherchons ?

-r--r--r--+ 1 User  admin  1052128  9  4 11:30 /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
-rw-r--r--+ 1 User  admin  1658  9  4 11:22 /usr/local/Library/Taps/homebrew/homebrew-dupes/libiconv.rb
-r-xr-xr-x  1 root  wheel  2088992 10  5  2013 /usr/lib/libiconv.2.dylib

Les fichiers iconv.h ne sont que ces deux :

/usr/local/Cellar/libiconv/1.14/include/iconv.h
/usr/include/iconv.h

Non c'est cool tout ça. Autant que je sache, vous devriez pouvoir "installer gem nokogiri" sans aucun autre argument ....

Je voulais juste ajouter que gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local a bien fonctionné pour moi. Lors de l'utilisation de bundler, je devais faire bundle config build.nokogiril --with-iconv-dir=/usr/local

@lamont-granquist Oui, gem install nokogiri fonctionne bien maintenant. Mais cette condition est différente. Cette fois, nokogiri a déjà été installé précédemment par 'gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv'. Auparavant, lorsque nokogiri n'était pas installé, 'gem install nokogiri' ne fonctionnait pas.
Est-il possible que l'exécution de 'gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv' ait modifié quelque chose ou ajouté des fichiers comme libiconv.dylib ou iconv.h ?

@SeanWangDev :+1:

OS X 10.9.4 Non-conformistes.
Les gars, aidez-moi s'il vous plaît. J'ai essayé toutes les manières qui sont ci-dessus. Aucun d'eux ne travaille pour moi. J'ai empilé sur gem install nokogiri avec/sans arguments, je reçois toujours une erreur:

$ gem installer nokogiri
Création d'extensions natives. Ça pourrait prendre un moment...
Construire des nokogiri à l'aide de bibliothèques packagées.
ERREUR : Erreur lors de l'installation de nokogiri :
ERREUR : Échec de la création de l'extension native gem.

/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb

Construire des nokogiri à l'aide de bibliothèques packagées.
vérification de iconv.h... * extconf.rb a échoué *
Impossible de créer Makefile pour une raison quelconque, probablement le manque de nécessaire
bibliothèques et/ou en-têtes. Consultez le fichier mkmf.log pour plus de détails. Vous pouvez
besoin d'options de configuration.

Options de configuration fournies :
--with-opt-dir
--sans-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--sans-faire-prog
--srcdir=.
--curdir
--ruby=/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby
--aider
--nettoyer
--use-system-libraries
--enable-statique
--disable-statique
--with-zlib-dir
--sans-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
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:434:in try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:565:in try_cpp'
à partir de /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1044:dans le bloc block in have_header' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:895:in dans check_for'
depuis /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block (2 levels) in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in open'
depuis /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in open'
depuis /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:336:in postpone' from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:894:in check_for'
de /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1043:in have_header' from extconf.rb:103:in have_iconv?'
from extconf.rb:148:in block (2 levels) in iconv_prefix' from extconf.rb:90:in preserve_globals'
from extconf.rb:143:in block in iconv_prefix' from extconf.rb:120:in each_iconv_idir'
from extconf.rb:137:in iconv_prefix' from extconf.rb:428:in block in

'
from extconf.rb:161:in block in process_recipe' from extconf.rb:154:in tap'
de extconf.rb:154:dans process_recipe' from extconf.rb:423:in
'

Les fichiers Gem resteront installés dans /usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1 pour inspection.
Résultats enregistrés dans /usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out

validez que vous avez ces fichiers :

% ls -la /usr/include/iconv.h
-rw-r--r--  1 root  wheel  7981 Jul 29 15:32 /usr/include/iconv.h
% ls -la /usr/lib/libiconv.*
lrwxr-xr-x  1 root  wheel       16 Feb 26  2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x  1 root  wheel  2088992 Feb 26  2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x  1 root  wheel       20 Feb 26  2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib

si vous ne le faites pas, utilisez sudo xcode-select --install et/ou accédez au site de téléchargement du développeur Apple et désinstallez et réinstallez manuellement xcode et les utilitaires de ligne de commande xcode jusqu'à ce que ces fichiers soient installés.

alors si vous utilisez homebrew, mettez à jour votre homebrew et unlink la libiconv

brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew unlink libiconv
brew install libiconv

validez que vous n'avez pas /usr/local/include/iconv.h :

% ls -la /usr/local/include/iconv.h
ls: /usr/local/include/iconv.h: No such file or directory

validez également que vous n'avez pas /opt/local/include/iconv.h

% ls -la  /opt/local/include/iconv.h
ls: /opt/local/include/iconv.h: No such file or directory

si vous avez ce fichier, vous avez installé iconv à partir de macports, idéalement vous vous en débarrasserez.

puis essayez:

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

(arrêtez quand vous trouvez celui qui fonctionne)

si tout le reste échoue :

brew link --force libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local

quelque chose là-dedans devrait fonctionner.

@ lamont-granquist : +1 :

@lamont-granquist Merci pour vos instructions, je comprends ce qui se passe et j'ai commencé à travailler sur un correctif. Cependant, je ne parviens toujours pas à reproduire le problème sur aucun de mes Mac, il n'y a donc aucun moyen de confirmer si un correctif fonctionne. Pouvez-vous éventuellement fournir les étapes de reproduction?

Eh bien, j'ai eu ce MBP pendant 3 ans et après 2 mises à jour du système d'exploitation et au moins 3 restaurations TM, mon /usr/include/iconv.h avait disparu d'une manière ou d'une autre. Donc, nuke'ing ce fichier peut causer le problème. La solution consiste à réinstaller xcode et les outils de ligne de commande correctement.

De plus, lors du débogage de cette chose, les gens suggèrent de faire "brew link libiconv --force" afin qu'il soit installé dans /usr/local/include/iconv.h - même s'il y a d'énormes avertissements lorsque vous faites "brew install libiconv ' et 'brew link libiconv' que c'est une mauvaise idée. Le problème est que vous pouvez récupérer cet iconv.h tout en récupérant le système /usr/lib/libiconv.dylib et cela a un conflit tout de suite sur iconv_open() vs libiconv_open() et ne parvient pas à compiler car ils sont différents versions.

Je ne suis pas sûr qu'il y ait quoi que ce soit à corriger dans ces cas. Le problème est vraiment de mutiler votre système d'exploitation et d'avoir besoin de le sauvegarder dans une forme plus vierge.

Il y a une chose que je ne comprends pas, c'est pourquoi le système de construction de nokogiri trouvera les fichiers /opt/local/include/iconv.h installés sur MacPorts. Je n'utilise pas MacPorts, donc je n'ai pas débogué cela, mais cela cause des problèmes similaires à ceux rencontrés lorsque homebrew a iconv.h lié directement à /usr/local/include. Si nokogiri pouvait être amené à arrêter de faire cela, cela aiderait les personnes qui ont installé libiconv à partir de MacPorts.

$ ls -la /usr/include/iconv.h

-rw-r--r-- 1 root wheel 7981 Sep 11 11:32 /usr/include/iconv.h

ls -la /usr/lib/libiconv.*
lrwxr-xr-x 1 roue racine 16 sept. 11 01:03 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
-r-xr-xr-x 1 roue racine 2088992 11 septembre 01:02 /usr/lib/libiconv.2.dylib
lrwxr-xr-x 1 roue racine 20 septembre 11 01:03 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib

brasser la mise à jour
Homebrew mis à jour de 45e07c0e à e0dee399.
==> Formules mises à jour
android-ndk go lockrun pazpar2
apache-spark h2 mpd pktanon
gearman juju-démarrage rapide ossp-uuid

$ brew tap homebrew/dupes
Attention : déjà tapé !

$ brasser désinstaller libiconv

Désinstallation de /usr/local/Cellar/libiconv/1.13.1...

Erreur : Autorisation refusée - /usr/local/Cellar/libiconv/1.13.1/bin/iconv

ça me donne une erreur d'autorisation à cette étape

vous devez corriger toutes vos autorisations sous /usr/local

quelle que soit votre connexion, vous devez corriger les perms afin que root ne possède pas de fichiers homebrew sous /usr/local :

mon nom d'utilisateur est 'lamont' que je peux trouver avec la commande id :

% id -nu
lamont

pour corriger les permanentes, je ferais :

% sudo chown -R lamont /usr/local

vous voulez cependant être très prudent avec cette commande et vérifier que vous avez tout orthographié correctement et que vous avez obtenu le bon nom d'utilisateur.

@lamont-granquist Le package libiconv de Homebrew n'installe-t-il pas /usr/local/lib/libiconv.dylib en mettant /usr/local/include/iconv.h? Ce que je ne comprends pas, c'est si /usr/local/include/iconv.h est récupéré pourquoi /usr/local/lib/libiconv.dylib n'est pas lors de la liaison. Habituellement, lorsque -I/usr/local/include est dans CPPFLAGS -L/usr/local/lib doit être dans LDFLAGS.

En ce qui concerne la rupture environnementale, Nokogiri pourrait au moins suggérer de (ré)installer les outils de ligne de commande lorsque /usr/include/iconv.h est manquant sur OS X.

brasser unlink libiconv
Erreur : Pas de fût de ce type : /usr/local/Cellar/libiconv

J'ai ignoré le message et suivi les étapes suivantes. Sans succès

@knu ouais, j'ai regardé ça et je pense que je me suis perdu dans le labyrinthe sinueux de mkmf.rb.

@Ilovebarca rm -f /usr/local/include/iconv.h pourrait aider

@lamont-granquist
non n'a pas aidé. BTW merci beaucoup d'avoir essayé de m'aider.
C'est fou, je suis nouveau sur mac et je commence à détester ça :))

Je vais apporter quelques modifications au processus de détection d'iconv et ajouter une vérification pour /usr/include/iconv.h manquant sur OS X à extconf.rb. Voici un travail en cours, et les testeurs sont les bienvenus !

Je suis passé par des problèmes de github, d'échange de pile, de google, etc. et la seule chose qui a fonctionné jusqu'à présent a été la suggestion de @lamont-granquist . Configuration à l'aide de :

OSX 10.9.5
rbenv

Je comprends que tant de gens voient leur environnement OS X cassé d'une manière ou d'une autre et qu'ils ne le remarquent même pas. Un problème est les outils de ligne de commande Xcode manquants et l'autre est Homebrew. La prochaine version de nokogiri essaiera de détecter une telle rupture avant d'entrer dans la construction et d'en avertir l'utilisateur.

Merci pour votre aide!

Merci @lamont-granquist, je lutte contre ce problème depuis une semaine maintenant et enfin votre solution de réinstallation de libiconv fonctionne... c'est un soulagement !!!

@jomz fonctionne sur osx 10.10. merci :+1:

À partir d'une nouvelle installation de 10.10 juste aujourd'hui :

xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew install ruby
source /etc/profile
gem install nokogiri

Cela a installé la version ruby ​​2.1.5p273 et nokogiri 1.6.4.1. Vraisemblablement, vous pourriez forcer l'installation de ces versions via homebrew et rubygems.

À partir d'une installation 10.10 mise à niveau à partir de 10.9 avec homebrew et ruby ​​déjà installés :

brew install libxml2 libxslt
gem install nokogiri -- --use-system-libraries

Je ne suis pas sûr qu'il ait été nécessaire de ré/installer libxml2 et/ou libxslt, mais cela a fait l'affaire pour moi.

Je crois que nous avons capturé cela dans le didacticiel d'installation mis à jour ici :

http://www.nokogiri.org/tutorials/installing_nokogiri.html

Si ce n'est pas le cas, faites-le moi savoir et je rouvrirai.

Merci pour le lien du tuto ! Cela a fonctionné pour moi lorsque j'ai spécifié les chemins de fichiers, comme décrit dans "Utilisation d'installations non standard de libxml2 / libxslt". (Il semble que /usr/bin sous OS X 10.6.8 soit considéré comme un emplacement non standard pour les bibliothèques système.)

Pour trouver les chemins de fichiers, j'ai utilisé les commandes Terminal which xml2-config et which xslt-config . Peut-être mettre à jour le tutoriel pour suggérer de le faire?

Cette page vous a été utile?
0 / 5 - 0 notes