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'
...
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!
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 dene 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 .
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
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
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.