Search code examples
rubygemsfedora-23

RubyGems Building Native Extensions Fails on Fedora 23


First I Try: gem install rails

It Produces:

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

    /usr/bin/ruby extconf.rb
checking if the C compiler accepts ... *** 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=/usr/bin/$(RUBY_BASE_NAME)
    --help
    --clean
/usr/share/ruby/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /usr/share/ruby/mkmf.rb:571:in `block in try_compile'
    from /usr/share/ruby/mkmf.rb:522:in `with_werror'
    from /usr/share/ruby/mkmf.rb:571:in `try_compile'
    from extconf.rb:80:in `nokogiri_try_compile'
    from extconf.rb:87:in `block in add_cflags'
    from /usr/share/ruby/mkmf.rb:619:in `with_cflags'
    from extconf.rb:86:in `add_cflags'
    from extconf.rb:336:in `<main>'


Gem files will remain installed in /home/hagoth/.gem/ruby/gems/nokogiri-1.6.7.2 for inspection.
Results logged to /home/hagoth/.gem/ruby/gems/nokogiri-1.6.7.2/ext/nokogiri/gem_make.out

I've installed development tools using sudo dnf install ruby-devel Also tried it with rvm requirements And I've spent the past five hours or so trying other obscure solutions online. None of them seem to have worked. Is there some simple obvious solution that I'm missing? I'm fairly sure the dependencies are there. Though I may be wrong.

Running 32 bit version of Fedora 23 if that means anything.

Update:

The contents of /home/username/.gem/ruby/gems/nokogiri-1.6.7.2/ext/nokogiri/mkmf.log are:

"gcc -o conftest -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.  -D_FILE_OFFSET_BITS=64  -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fPIC  conftest.c  -L. -L/usr/lib -L. -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -fstack-protector -rdynamic -Wl,-export-dynamic  -m32   -lruby  -lpthread -ldl -lcrypt -lm   -lc "
gcc: error: /usr/lib/rpm/redhat/redhat-hardened-cc1: No such file or directory
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

Solution

  • I'm not quite sure why the package's build script is looking for the particular file it can't find, but it's provided by the redhat-rpm-config package. I'm pretty sure that should be on Fedora Workstation by default. In any case, since you are building software on your system, I'd suggest making sure the following groups are installed:

    sudo dnf groupinstall development-tools rpm-development-tools c-development 
    

    That will solve this particular problem, and will ensure that you have other basic "native" build infrastructure tooling installed.