Comment installer Nokogiri Ruby gem avec mkmf.le journal dit que libiconv n'a pas été trouvé?

j'installe le Ruby Nokogiri gem et je trouve l'erreur ci-dessous.

comment diagnostiquer ceci et le résoudre?

# gem install nokogiri
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
ERROR: Failed to build gem native extension.
...
/opt/ruby/1.9.3-p194/bin/ruby extconf.rb
checking for libxml/parser.h... *** 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.
...
/opt/ruby/1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': 
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /opt/ruby/1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:506:in `try_cpp'
...
26
demandé sur joelparkerhenderson 2012-09-09 06:53:07

5 réponses

pour diagnostiquer et résoudre, voici ce qui a fonctionné pour moi.

pour savoir ce qui a échoué, allez dans votre répertoire ruby gems.

par exemple:

$ cd <MY RUBY DIRECTORY>/lib/ruby/gems/2.0.0/gems

si vous ne connaissez pas votre répertoire gem, essayez ceci:

$ echo $GEM_HOME
/opt/gems/2.0.0
$ cd /opt/gems/2.0.0/gems

quelle version de nokogiri dois-je installer?

$ ls -ladg nokogiri-*
nokogiri-1.5.5

aller dans le répertoire de l'installateur:

$ cd nokogiri-1.5.5/ext/nokogiri

Try installation manuelle:

$ ruby extconf.rb

résultat:

checking for libxml/parser.h... *** extconf.rb failed ***
...

j'utilise Ubuntu donc je recherche des paquets similaires:

$ aptitude search libxml

Résultats:

p libxml2 - GNOME XML library
p libxml2-dev - Development files for the GNOME XML library
...

je crois que libxml2 fonctionnera très bien.

$ apt-get install libxml2

Ruby native gems ont souvent besoin des paquets * - dev pour les en-têtes alors installez-les:

$ apt-get install libxml2-dev

maintenant j'ai l'analyseur fichier?

$ find / | grep libxml/parser.h

Oui, le résultat montre l'analyseur:

/usr/include/libxml2/libxml/parser.h

essayez maintenant d'installer à nouveau, cette fois en fournissant le chemin libxml2:

$ gem install nokogiri -- --with-xml2-dir=/usr/include/libxml2

il échoue toujours, alors lisez le journal des erreurs mkmf:

$ more mkmf.log 

le journal des erreurs montre ce qui a échoué et a ces lignes qui semblent prometteuses:

package configuration for libxslt is not found

est-ce qu'il y a un paquet pour ça?

$ aptitude search libxslt

Résultats:

v   libxslt-dev
i   libxslt-ruby
...

installer le paquet dev:

$ apt-get install libxslt-dev

essayez maintenant d'installer à nouveau, et mettez aussi xslt sur le chemin:

$ gem install nokogiri -- \
--with-xml2-dir=/usr/include/libxml2 \
--with-xslt-dir=/usr/include/libxslt

succès!

58
répondu joelparkerhenderson 2013-09-13 23:13:29

Installation Du Site Web Nokogiri

'Installing Nokogiri' est un site dédié à l'installation de Nokogiri sur les principales plateformes - voici un extrait sur L'installation de Nokogiri sur Ubuntu:

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

à partir de Nokogiri 1.6, le code source de libxml2 et libxslt est fourni avec Nokogiri, et compilé au moment de l'installation de gem. Les instructions de ce document devrait fonctionner pour toutes les versions 1.6.4 et plus tard.

Ubuntu / Debian

L'Installation de

ne devrait fonctionner que sur Ubuntu et Debian en utilisant Nokogiri vendored libxml2 et libxslt:

gem install nokogiri

[...]

Utiliser Votre Système Bibliothèques

Si, au lieu de Nokogiri de vendored bibliothèques, vous souhaitez utiliser votre libxml2, libxslt et les bibliothèques du système, s'il vous plaît d'abord comprenez que vous demandez peut-être à Nokogiri de travailler avec un version de libxml2.

sudo apt-get install pkg-config
gem install nokogiri -- --use-system-libraries

FYI - j'utilise Nokogiri 1.6.6.2 et il n'a pas "juste fonctionné". Je l'ai eu avec le --use-system-libraries .


Mac OS X

les conseils du site couvre également OS X-cela a fonctionné pour moi:

gem update --system xcode-select --install gem install nokogiri


Conclusion

si vous avez un problème Nokogiri sur n'importe quelle plate-forme, vous devez consulter le site .

8
répondu not a patch 2017-01-31 14:32:22

sur CentOS voici ce que je devais faire:

gem update --system
yum install libxml2-devel libxslt-devel ruby-devel
gem install nokogiri -- --use-system-libraries
3
répondu DaShaun 2015-11-05 18:29:53

ne pouvait pas créer de Makefile pour une raison quelconque, probablement manque de bibliothèques et/ou d'en-têtes nécessaires .

vous manquez probablement les en-têtes zlib qui sont nécessaires pour le drapeau -lz afin de compiler les sources correctement. Installer sur Linux par:

sudo apt-get install libz-dev

pour manquer libiconv, essayez d'installer le paquet libiconv-hook-dev dont les fichiers d'en-tête sont libiconv-hook , p.ex.

sudo apt-get install libiconv-hook1 libiconv-hook-dev

sur OS X, essayez d'installer des outils de développement via: xcode-select --install .

s'il y a toujours un problème, cochez mkmf.log pour plus de détails sur votre erreur.


sur Ubuntu, essayez le combo de correctifs de dépendances suivant:

sudo apt-get install gcc ruby-dev libxslt-dev libxml2-dev zlib1g-dev
0
répondu kenorb 2017-01-30 04:01:37

l'erreur' ne pouvait pas créer le Makefile ' que vous voyez pourrait aussi être parce que vous n'avez pas accepté la licence Xcode (vous devez l'accepter après chaque mise à jour de Xcode). L'exécution de sudo xcodebuild -license accept devrait éliminer cette erreur pour vous et vous permettre ensuite d'exécuter gem install nokogiri avec succès.

0
répondu Bryan Finlayson 2017-09-25 15:31:14