163 votes

Pourquoi l’installation de nokogiri sur Mac OS échoue avec libiconv?

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 beaucoup d'aide autour du web, y compris la construction et l'installation d' libxml2 et libxslt l'aide brew et la construction libiconv à partir des sources (comme décrit dans l'Installation de Nokogiri), l'erreur reste la même.

Lorsque vous essayez d'exécuter l'installation de la nokogiri gem libxml2 et libxslt semblent bien, mais pas libiconv.

N'importe qui avec une meilleure connaissance de ces choses savoir comment obtenir nokogiri installé?

241voto

Cory Points 1399

J'ai eu le même problème. Malheureusement,"l'Installation de Nokogiri" ne couvre pas Iconv questions. Voici comment j'ai résolu le problème.

La première installation de homebrew, il va faire de votre vie plus facile. Si vous l'avez déjà installé, assurez-vous de saisir les dernières formules de mise à jour comme suit:

brew update

Remarque: Dans OSX 10.9+ vous devrez peut-être installer xCode commande outils pour vous permettre d'installer libiconv.

xcode-select --install

puis installer une version plus récente de libiconv

brew install libiconv

ensuite le lien de votre nouveau iconv libs:

brew link libiconv

installez ensuite votre bijou

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

100voto

Filip Kis Points 447

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
 

36voto

La solution de @Cory contient la réponse correcte, mais la solution sur Mavericks est en réalité beaucoup plus simple que la solution supérieure.

Sur Mavericks (OSX 10.9+):

Installer les outils de ligne de commande Xcode:

 xcode-select --install
 

puis installez votre gem:

 gem install nokogiri
 

20voto

J'ai finalement été en mesure de résoudre ce problème. Aucune des solutions ci-dessus complètement résolu pour moi.

J'ai été faire cette erreur lorsque vous essayez d' gem install nokogiri sur OSX Lion 10.7.2. Tout d'abord, cette erreur masque le vrai problème en disant libiconv est manquant, parce que vous obtiendrez l'erreur, même si nokogiri ne peut pas trouver de libxslt ou libxml2, qui, dans mon cas, il ne le pouvait pas.

J'ai donc suivi les instructions sur http://nokogiri.org/tutorials/installing_nokogiri.html en vertu de la section Homebrew (légèrement modifié pour tenir compte de la plus récente version 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 nokogiri site et essayé

gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

Toutefois, cela a échoué parce que lors de la construction de libxslt à partir de la source, il installe l' /include le dossier dans un funky. Donc, vous devez spécifier l' lib et include dossiers 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 fonctionne toujours pas (même libiconv erreur), j'ai donc essayé de préciser 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 autre erreur! C'est encore une erreur, mais au moins, c'était différent. Le rendre le processus 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 miracle post: 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 quelques mauvaises versions de la libz bibliothèque (libz.dylib, libz.1.dylib, libz.1.2.4.dylib) et ils doivent être remplacés avec les dernières versions de Xcode SDK. L'article explique mieux que je peux afin de lire le lien ci-dessus pour obtenir des instructions spécifiques.

Une fois qu'il a été remplacé, 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

de nouveau et tout allait bien. J'espère que cela aide quelqu'un d'autre.

6voto

Kevin Ng Points 27

Je suis à l'aide de ... OS X 10.9.4 Homebrew 0.9.4

Voici mon résumé de ce fil pour réussir l'installation de nokogiri, fixation manquant libiconv.

Installer Homebrew http://brew.sh/ Ou de la dernière mise à jour de l'aide de la commande ci-dessous

brew update

Installer libxml2 libxslt

brew install libxml2 libxslt

Le lien entre les deux libxml2 libxslt

brew link libxml2 libxslt

Si vous obtenez avertissement utilisation de --force, il suffit d'utiliser la commande ci-dessous

brew link --force libxml2 libxslt

Installer xCode commande outils pour vous permettre d'installer libiconv

xcode-select --install

Installer 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, installer 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X