web-dev-qa-db-fra.com

Comment installer la gemme Nokogiri Ruby avec mkmf.log en disant libiconv introuvable?

J'installe la gemme Ruby Nokogiri et trouve l'erreur ci-dessous.

Comment diagnostiquer cela 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'
...
27

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

Pour savoir ce qui a échoué, accédez à 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 est-ce que j'installe?

$ ls -ladg nokogiri-*
nokogiri-1.5.5

Allez dans le répertoire d'installation:

$ cd nokogiri-1.5.5/ext/nokogiri

Essayez d'installer manuellement:

$ Ruby extconf.rb

Résultat:

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

J'utilise Ubuntu et je recherche donc des packages 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 bien.

$ apt-get install libxml2

Les gemmes natives Ruby ont souvent besoin des paquets * -dev pour les en-têtes, alors installez-les:

$ apt-get install libxml2-dev

Ai-je maintenant le fichier d'analyse?

$ find / | grep libxml/parser.h

Oui, le résultat montre l'analyseur:

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

Maintenant, essayez 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 ces lignes semblent prometteuses:

package configuration for libxslt is not found

Y at-il un paquet pour cela?

$ aptitude search libxslt

Résultats:

v   libxslt-dev
i   libxslt-Ruby
...

Installez le paquet dev:

$ apt-get install libxslt-dev

Maintenant, essayez de réinstaller, et mettez aussi xslt sur le chemin:

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

Succès!

59

Installation du site Web Nokogiri

'Installation de Nokogiri' est un site Web dédié à l'installation de Nokogiri sur les principales plates-formes. Voici un extrait de l'installation de Nokogiri sur Ubuntu:

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

À partir de Nokogiri 1.6, le code source libxml2 et libxslt est fourni avec Nokogiri, et compilé au moment de l’installation de Gem. Les instructions dans cette document devrait fonctionner pour toutes les versions 1.6.4 et ultérieures.

Ubuntu/Debian

L’installation devrait fonctionner avec Ubuntu et Debian à l’aide de Nokogiri vendored libxml2 et libxslt:

gem install nokogiri

[...]

Utilisation de vos bibliothèques système

Si, au lieu des bibliothèques vendues par Nokogiri, vous souhaitez utiliser votre fichier libxml2, libxslt et les bibliothèques associées du système, veuillez commencer par comprenez que vous demandez peut-être à Nokogiri de travailler avec un appareil sans support version de libxml2.

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

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


Mac OS X

Les conseils du site Web couvrent é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 devriez consultez le site Web .

9
not a patch

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
DaShaun

Impossible de créer le Makefile pour une raison quelconque, probablement manque de bibliothèques et/ou d’en-têtes nécessaires .

Il vous manque probablement des en-têtes zlib requis pour l'attribut -lz afin de compiler correctement les sources. Installer sur Linux par:

Sudo apt-get install libz-dev

Pour libiconv manquant, essayez d’installer le package libiconv-hook-dev qui contient des fichiers d’entête de libiconv-hook, par exemple.

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

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

Si le problème persiste, consultez le fichier mkmf.log pour plus de détails sur votre erreur.


Sous Ubuntu, essayez le combo de correction de dépendance suivant:

Sudo apt-get install gcc Ruby-dev libxslt-dev libxml2-dev zlib1g-dev
0
kenorb

L'erreur 'impossible de créer le Makefile' que vous voyez peut également être due au fait que vous n'avez pas accepté la licence Xcode (vous devez l'accepter après chaque mise à jour de Xcode). Exécuter Sudo xcodebuild -license accept devrait éliminer cette erreur pour vous et vous permettre d'exécuter ensuite gem install nokogiri avec succès.

0
Bryan Finlayson