Construire une gem avec une extension native (Gem :: Installer :: ExtensionBuildError)

J’ai la configuration suivante:

  • uname -a: Linux 2.6.24.2 i686 GNU / Linux (Ubuntu)
  • ruby -v: ruby 1.9.0 (2007-12-25 révision 14709) [i486-linux]
  • rails -v: Rails 3.0.0.beta3
  • gem -v : 1.3.5
  • rake –version: rake, version 0.8.7
  • make -v: GNU Make 3.81
  • gem env:
    • VERSION RUBYGEMS: 1.3.5
    • VERSION RUBY: 1.9.0 (2007-12-25 patchlevel 0) [i486-linux]
    • RÉPERTOIRE D’INSTALLATION: /usr/lib/ruby1.9/gems/1.9.0
    • RUBY EXECUTABLE: /usr/bin/ruby1.9
    • Répertoire exécutable: / usr / bin
    • PLATES-FORMES DE RUBYGEMS:
    • rbuy
    • x86-linux
    • GEM PATHS:
      • /usr/lib/ruby1.9/gems/1.9.0
      • /root/.gem/ruby/1.9.0
    • CONFIGURATION GEM:
      • : update_sources => true
      • : verbose => true
      • : benchmark => false
      • : backtrace => false
      • : bulk_threshold => 1000
    • SOURCES À DISTANCE:
      • http://gems.rubyforge.org/

Et quand j’essaie cette commande simple:

gem install nokogiri 

Voici ce que je reçois:

 # gem installer nokogiri
 Construire des extensions natives.  Ça pourrait prendre un moment...
 ERREUR: Erreur lors de l'installation de nokogiri:
         ERREUR: Impossible de construire l'extension native gem.

 /usr/bin/ruby1.9 extconf.rb
 Recherche de iconv.h dans / opt / local / include /, / opt / local / include / libxml2, / opt / local / include, / opt / local / include, / opt / local / include / libxml2, / usr / local / include, / usr / local / include / libxml2, / usr / include, / usr / include / libxml2, / usr / include, / usr / include / libxml2 ... oui
 Recherche de libxml / parser.h dans / opt / local / include /, / opt / local / include / libxml2, / opt / local / include, / opt / local / include, / opt / local / include / libxml2, / usr / local / include, / usr / local / include / libxml2, / usr / include, / usr / include / libxml2, / usr / include, / usr / include / libxml2 ... oui
 Recherche de libxslt / xslt.h dans / opt / local / include /, / opt / local / include / libxml2, / opt / local / include, / opt / local / include, / opt / local / include / libxml2, / usr / local / include, / usr / local / include / libxml2, / usr / include, / usr / include / libxml2, / usr / include, / usr / include / libxml2 ... oui
 Recherche de libexslt / exslt.h dans / opt / local / include /, / opt / local / include / libxml2, / opt / local / include, / opt / local / include, / opt / local / include / libxml2, / usr / local / include, / usr / local / include / libxml2, / usr / include, / usr / include / libxml2, / usr / include, / usr / include / libxml2 ... oui
 vérification de xmlParseDoc () dans -lxml2 ... oui
 rechercher xsltParseStylesheetDoc () dans -lxslt ... yes
 rechercher exsltFuncRegister () dans -lexslt ... yes
 vérification de xmlRelaxNGSetParserStructuredErrors () ... oui
 vérification de xmlRelaxNGSetParserStructuredErrors () ... oui
 vérification de xmlRelaxNGSetValidStructuredErrors () ... oui
 vérification de xmlSchemaSetValidStructuredErrors () ... oui
 vérification de xmlSchemaSetParserStructuredErrors () ... oui
 créer un Makefile

 faire
 cc -I.  -I / usr / include / libxml2 -I / usr / include -I / usr / include / ruby-1.9.0 / i486-linux -I / usr / include / ruby-1.9.0 -I.  -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETPARSERSTRUCTUREDERRORS -I / opt / local / include / -I / opt / local / include / libxml2 -I / opt / local / include -D_FILE_OFFSET_BITS = 64 -fPIC -fno-ssortingct-aliasing - g -fPIC -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-ssortingngs -Wconversion -Wmissing-noreturn -Winline -o xml_document_fragment.o -c xml_document_fragment.c
 Dans le fichier inclus à partir de ./nokogiri.h:75,
           De ./xml_document_fragment.h:4,
           De xml_document_fragment.c: 1:
 ./xml_document.h:5:16: erreur: st.h: aucun fichier ou dossier avec ce type
 make: *** [xml_document_fragment.o] Erreur 1


 Les fichiers Gem restront installés dans /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1 pour inspection.
 Résultats consignés dans /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1/ext/nokogiri/gem_make.out

Le fichier “gem_make.out” contient exactement les mêmes informations que celles décrites ci-dessus.

Si j’essaie avec un autre bijou:

 gem install gherkin 

Voici ce que je reçois:

 u gem installer gherkin
 Construire des extensions natives.  Ça pourrait prendre un moment...
 ERREUR: Erreur lors de l'installation de Gherkin:
         ERREUR: Impossible de construire l'extension native gem.

 /usr/bin/ruby1.9 extconf.rb
 vérification de main () dans -lc ... oui
 créer un Makefile

 faire
 cc -I.  -I / usr / include / ruby-1.9.0 / i486-linux -I / usr / include / ruby-1.9.0 -I.  -D_FILE_OFFSET_BITS = 64 -fPIC -fias-ssortingct-aliasing -g -fPIC -o gherkin_lexer_ar.o -c gherkin_lexer_ar.c
 /Users/aslakhellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl:11:16: erreur: re.h: Aucun fichier ou dossier de ce type
 make: *** [gherkin_lexer_ar.o] Erreur 1


 Les fichiers Gem restront installés dans /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30 pour inspection.
 Résultats consignés dans /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30/ext/gherkin_lexer_ar/gem_make.out

En fait, chaque fois que j’essaie d’ installer une gemme avec une extension native , j’obtiens le même type d’erreur.

Est-ce que ça vous dit quelque chose?

Il semble que le numéro 116 de Nokogiri dit tout:

Ruby 1.9.0 n’est pas pris en charge . Vous devriez passer à 1.9.1-p129 ou même à 1.9.2. 1.9.0 est trop cassé pour être supporté. 🙁

Je peux maintenant vouloir mettre à jour ce petit truc de rbuy …

Pour nokogiri, vous pouvez essayer ici

Pour les autres joyaux, vous pouvez vérifier ici les problèmes de compatibilité avec Ruby 1.9