web-dev-qa-db-fra.com

Nokogiri 'Échec de la création de l'extension native gem' lorsque j'exécute une installation groupée

J'utilise bundle install et j'obtiens cette erreur:

Building nokogiri using system libraries.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb --use-system-libraries
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
*** 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
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --with-xml2-dir
    --without-xml2-dir
    --with-xml2-include
    --without-xml2-include=${xml2-dir}/include
    --with-xml2-lib
    --without-xml2-lib=${xml2-dir}/lib
    --with-libxml-2.0-config
    --without-libxml-2.0-config
    --with-pkg-config
    --without-pkg-config
    --with-xslt-dir
    --without-xslt-dir
    --with-xslt-include
    --without-xslt-include=${xslt-dir}/include
    --with-xslt-lib
    --without-xslt-lib=${xslt-dir}/lib
    --with-libxslt-config
    --without-libxslt-config
    --with-pkg-config
    --without-pkg-config
    --with-exslt-dir
    --without-exslt-dir
    --with-exslt-include
    --without-exslt-include=${exslt-dir}/include
    --with-exslt-lib
    --without-exslt-lib=${exslt-dir}/lib
    --with-libexslt-config
    --without-libexslt-config
    --with-pkg-config
    --without-pkg-config

extconf failed, exit code 1

Gem files will remain installed in /Users/myuser/projectpath/vendor/bundle/Ruby/2.0.0/gems/nokogiri-1.6.2.rc2 for inspection.
Results logged to /Users/myuser/projectpath/vendor/bundle/Ruby/2.0.0/extensions/universal-darwin-13/2.0.0/nokogiri-1.6.2.rc2/gem_make.out
An error occurred while installing nokogiri (1.6.2.rc2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.2.rc2'` succeeds before bundling.

Des idées ce que cela pourrait être?

MODIFIER:

J'ai également installé nokogiri en suivant les instructions du tutoriel , et ce qui est étrange, c'est que la gemme a été installée avec succès. Lorsque j’exécute gem list, j’ai nokogiri (1.6.2.1), mais lorsqu’il exécute bundle install, l’erreur est affichée.

65
FabKremer

Les conseils précédents ne m'ont pas aidé, voici la solution pour OS 10.9:

brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle install
227
Kir

Sur Mavericks, cette solution de contournement a fonctionné pour moi:

gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2

Voir: https://github.com/sparklemotion/nokogiri/issues/1099#issuecomment-43023208

51
pcv

Sur Amazon Linux, j'ai dû installer ces deux bibliothèques de développement, puis spécifier le chemin d'inclusion pour libxml2

$ yum install libxml2-devel libxslt-devel
$ gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/usr/include/libxml2/
14
andrewtweber

J'ai aussi eu quelques problèmes lors de l'installation de nokogiri, puis j'ai installé les paquets suivants, cela a fonctionné pour moi:

libxslt-dev
libxml2-dev
libruby1.8
libreadline-Ruby1.8
libopenssl-Ruby
libxml2

Je ne suis pas sûr, lequel était exactement nécessaire.

4
Saurabh

http://nokogiri.org/tutorials/installing_nokogiri.html . Reportez-vous à ce lien et installez les dépendances requises pour nokogiri. Puis lancez ceci 

  • bundle config build.nokogiri --use-system-libraries
  • bundle install
3
dTron

Cela a fonctionné pour OS X El Capitan: 

brew install libxml2 libxslt libiconv 

Après avoir exécuté the'brew install libxml2 libxslt libiconv ', vous constaterez peut-être qu'ils sont déjà installés. Pas de soucis, il n'est jamais mauvais de vérifier.

Sudo gem install nokogiri -v '1.6.7' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib

bundle install

Changez la version de nokogiri, si nécessaire. par exemple. 

Sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
2
DaedalusZ

Sur Yosemite 10.10.1, cette étape n'a pas aidé (peut-être que cela fonctionne pour d'autres) 

gem install nokogiri -- --use-system-libraries

En gros, le problème sur ma section locale était dû à libxml2. La solution suivante a donc été efficace.

bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2

bundle install
2
Rohan Daxini

Sur Yosemite 10.10, les étapes suivantes ont complètement résolu mes problèmes:

  • Sudo xcode-select -switch /Library/Developer/CommandLineTools
  • gem uninstall nokogiri libxml-Ruby
  • gem install nokogiri
1
Ulan Assanov

L'erreur indique que votre bibliothèque système libxml2 est obsolète. Vous avez besoin de la version 2.6.21 ou ultérieure.

Sur mon système Debian/Ubuntu, nokogiri compile pour moi et je peux voir que j'ai la version 2.9.1.

dpkg -l | grep libxml2-dev
ii  libxml2-dev:AMD64                      2.9.1+dfsg1-3                      AMD64        Development files for the GNOME XML library

Vous avez trois options ici. 

  1. Vérifiez si votre gestionnaire de packages du système d'exploitation fournit une version plus récente de la bibliothèque libxml2

  2. Téléchargez le dernier code source libxml2, compilez et installezit 

  3. Spécifiez manuellement une ancienne version de nokogiri dans votre Gemfile Qui fonctionne avec l'ancienne bibliothèque libxml2. Le journal des modifications nokogiri montre que vous ne rencontrerez pas ce problème avec la version 1.4.7 de nokogiri (l'utilisation d'une ancienne version Peut vous exposer à des problèmes de sécurité). 

Pour la solution n ° 3, vous mettriez ceci dans votre gemfile: gem 'nokogiri', '1.4.7'

1
Martin Konecny

Pour Mac, la raison de son échec est que vous n'aviez pas les derniers outils de développement Xcode. Nokogiri a déjà été fourni avec libxml2. En l'absence des derniers outils de développement Xcode, il ne peut pas créer d'extensions natives.

Pour mettre à jour les outils de développement Xcode à l'aide de:

xcode-select --install

Et alors:

gem install nokogiri

Si vous corrigez en utilisant

gem install nokogiri -- --use-system-libraries

peut recevoir un avertissement similaire plus tard:

WARNING: Nokogiri was built against LibXML version 2.9.3, but has dynamically loaded 2.9.0
1
Kay Wu

Sur OSX 10.12 (Sierra), cela a fonctionné pour moi:

gem install nokogiri -- --use-system-libraries=true --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/libxml2

0
Harlan T Wood

C'est un vieux fil, mais je rencontre des problèmes similaires, et la solution dans mon cas était très différente de celle affichée jusqu'à présent.

Après quelques recherches, j'ai trouvé le fil suivant: https://github.com/bundler/bundler/issues/2648#issuecomment-25124800

Il parle de bundler utilisant une version différente de Ruby à celle utilisée par gem.

De la pâte d'OP, nous pouvons voir que le lieur utilise la copie de Ruby sur le système Mac: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby

Dans mon cas, j'ai trouvé que la gemme venait de brasser; which gem a donné /usr/local/bin/gem aux liens symboliques vers /Cellar/Ruby/2.3.3/bin/gem. Je suppose que le cas du PO était le même.

Ainsi, gem et bundler ne fonctionnent pas avec la même installation de Ruby, ce qui explique pourquoi l'OP voit ceci:

Lorsque je lance la liste des gemmes, j'ai nokogiri (1.6.2.1), mais lors de l'exécution de l'installation en bundle, l'erreur est affichée.

Dans mon cas, j’ai simplement exécuté gem install bundler, ce qui a permis à bundler de commencer à utiliser la version brassée de Ruby, et tous les problèmes ont disparu.

0
Dave Cahill

J'ai eu ce problème précis. Je lance un environnement Rails sur un Mac. Après avoir passé de Yosemite à Sierra, je pense que c’est à ce moment-là que tout a commencé.

Pour résoudre le problème, il me suffisait d'installer xcode command line tools. Je ne sais pas si la mise à niveau Sierra les a supprimés ou quoi.

xcode-select --install

(ceci installera le xcode command line tools)

Aussi un autre symptôme ... des choses comme le statut de git ne fonctionnera pas. Après cela, j'ai pu faire Rails new appname et c'était bien.

0
eaglerockdude

Ce fil sur GitHub m'a donné le truc dont j'avais besoin pour installer Nokogiri 1.6.2:

Mon ~/.gitconfig avait le paramètre autocrlf = input. Lorsque je supprime ce paramètre, la construction nokogiri réussit.

0
jmuyskens

Sur Yosemite 10.10, cette solution de contournement a fonctionné pour moi:

gem install nokogiri -- --use-system-libraries
0
RckLN

Pour #CentOS, je devais faire ce qui suit:

gem update --system
yum install libxml2-devel libxslt-devel Ruby-devel
gem install nokogiri -- --use-system-libraries
0
DaShaun