Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gem::Ext::BuildError: ERROR: Failed to build gem native extension for Puma Gem

I have imported my ruby project from Linux(using RVM) to MacOSX(rbenv). Both are using the same version of rails & ruby. As I followed the GoRails guide to install RoR on both the machines.

So as I have imported the sample_app from Linux to MacOSX, I ran bundle install. I installed lots of gems nearly 50-100 but this one failed. I have no idea why is it failing. To me it looks like it failed to compile some of the c files but I don't know how to fix these errors. Thanks

Installing puma 2.11.1 with native extensions

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

    /usr/local/var/rbenv/versions/2.2.3/bin/ruby -r ./siteconf20160304-50117-b8gsxw.rb extconf.rb
checking for BIO_read() in -lcrypto... yes
checking for SSL_CTX_new() in -lssl... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling http11_parser.c
compiling io_buffer.c
io_buffer.c:119:10: warning: passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
  return rb_str_new(b->top, b->cur - b->top);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/var/rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/intern.h:796:20: note: expanded from macro 'rb_str_new'
        rb_str_new_static((str), (len)) : \
                          ^~~~~
/usr/local/var/rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/intern.h:727:37: note: passing argument to parameter here
VALUE rb_str_new_static(const char *, long);
                                    ^
io_buffer.c:119:10: warning: passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
  return rb_str_new(b->top, b->cur - b->top);
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/var/rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/intern.h:797:13: note: expanded from macro 'rb_str_new'
        rb_str_new((str), (len));         \
                   ^~~~~
/usr/local/var/rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/intern.h:706:29: note: passing argument to parameter here
VALUE rb_str_new(const char*, long);
                            ^
2 warnings generated.
compiling mini_ssl.c
In file included from mini_ssl.c:3:
/usr/local/var/rbenv/versions/2.2.3/include/ruby-2.2.0/ruby/backward/rubyio.h:2:2: warning: use "ruby/io.h" instead of "rubyio.h" [-W#warnings]
#warning use "ruby/io.h" instead of "rubyio.h"
 ^
mini_ssl.c:4:10: fatal error: 'openssl/bio.h' file not found
#include <openssl/bio.h>
         ^
1 warning and 1 error generated.
make: *** [mini_ssl.o] Error 1

make failed, exit code 2

Gem files will remain installed in /usr/local/var/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/puma-2.11.1 for inspection.
Results logged to /usr/local/var/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/puma-2.11.1/gem_make.out
like image 640
abhimanyuaryan Avatar asked Mar 03 '16 23:03

abhimanyuaryan


People also ask

What is gem native extension?

“Native extensions” are the glue that connects a Ruby gem with some other non-Ruby software component or library present on your machine. The native extensionis not the dependency. A native extension is generally a C code that interacts with a non-Ruby dependency.


1 Answers

If you are using ubuntu 14.04 to any upgraded versions and if you have installed OpenSSL in your system then you just need to run these commands

First Just get the location where OpenSSL installed normally it is installed in this location /usr/bin/openssl if you have installed in separate location get your location first using

 sudo find / -name openssl

and then

bundle config build.puma --with-opt-dir=/usr/bin/openssl

and then

bundle install 

It will be succeeded unless your OpenSSL installed in a path is correct

If you haven't installed OpenSSL before just install it using

sudo apt-get install openssl

It will work prefectly. Cheers

like image 72
Ali Hassan Mirza Avatar answered Oct 26 '22 00:10

Ali Hassan Mirza