Build a gem with native extension (Gem::Installer::ExtensionBuildError)

10,939

It seems that the Issue #116 of Nokogiri says it all:

Ruby 1.9.0 is not supported. You should upgrade to 1.9.1-p129 or even the 1.9.2. 1.9.0 is too broken to be supported. :-(

I may now want to update this little ruby thing...

Share:
10,939
Arnaud Leymet
Author by

Arnaud Leymet

Developer. Startuper. Builder. Crafter. Father.

Updated on June 09, 2022

Comments

  • Arnaud Leymet
    Arnaud Leymet almost 2 years

    I have the following configuration:

    • uname -a : Linux 2.6.24.2 i686 GNU/Linux (Ubuntu)
    • ruby -v : ruby 1.9.0 (2007-12-25 revision 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 :
      • RUBYGEMS VERSION: 1.3.5
      • RUBY VERSION: 1.9.0 (2007-12-25 patchlevel 0) [i486-linux]
      • INSTALLATION DIRECTORY: /usr/lib/ruby1.9/gems/1.9.0
      • RUBY EXECUTABLE: /usr/bin/ruby1.9
      • EXECUTABLE DIRECTORY: /usr/bin
      • RUBYGEMS PLATFORMS:
      • ruby
      • x86-linux
      • GEM PATHS:
        • /usr/lib/ruby1.9/gems/1.9.0
        • /root/.gem/ruby/1.9.0
      • GEM CONFIGURATION:
        • :update_sources => true
        • :verbose => true
        • :benchmark => false
        • :backtrace => false
        • :bulk_threshold => 1000
      • REMOTE SOURCES:

    And when I try this simple command:

    gem install nokogiri
    

    Here is what I get:

    # gem install nokogiri
    Building native extensions.  This could take a while...
    ERROR:  Error installing nokogiri:
            ERROR: Failed to build gem native extension.
    
    /usr/bin/ruby1.9 extconf.rb
    checking for iconv.h in /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... yes
    checking for libxml/parser.h in /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... yes
    checking for libxslt/xslt.h in /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... yes
    checking for libexslt/exslt.h in /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... yes
    checking for xmlParseDoc() in -lxml2... yes
    checking for xsltParseStylesheetDoc() in -lxslt... yes
    checking for exsltFuncRegister() in -lexslt... yes
    checking for xmlRelaxNGSetParserStructuredErrors()... yes
    checking for xmlRelaxNGSetParserStructuredErrors()... yes
    checking for xmlRelaxNGSetValidStructuredErrors()... yes
    checking for xmlSchemaSetValidStructuredErrors()... yes
    checking for xmlSchemaSetParserStructuredErrors()... yes
    creating Makefile
    
    make
    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-strict-aliasing -g  -fPIC   -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -o xml_document_fragment.o -c xml_document_fragment.c
    In the included file starting at ./nokogiri.h:75,
              From ./xml_document_fragment.h:4,
              From xml_document_fragment.c:1:
    ./xml_document.h:5:16: error: st.h : No file or folder with this type
    make: *** [xml_document_fragment.o] Error 1
    
    
    Gem files will remain installed in /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1 for inspection.
    Results logged to /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1/ext/nokogiri/gem_make.out
    

    The "gem_make.out" file contains the exact same information as described above.

    If I try with another gem:

    gem install gherkin
    

    Here is what I get:

    u# gem install gherkin
    Building native extensions.  This could take a while...
    ERROR:  Error installing gherkin:
            ERROR: Failed to build gem native extension.
    
    /usr/bin/ruby1.9 extconf.rb
    checking for main() in -lc... yes
    creating Makefile
    
    make
    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 -fno-strict-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
    
    
    Gem files will remain installed in /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30 for inspection.
    Results logged to /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30/ext/gherkin_lexer_ar/gem_make.out
    

    In fact whenever I try to install a gem with native extension, I get the same type of error.

    Would that ring a bell to anyone?