2016-02-11 2 views
6

Я просто переформатирую свой MacBook, и я пытаюсь клонировать мой проект Rails. Когда я делаю bundle install, жемчуг Puma потерпел неудачу.Невозможно установить Puma gem на OSX 10.11.3

Когда я бегу gem install puma -v '2.13.4', я получаю эту ошибку:

Fetching: puma-2.13.4.gem (100%) 
Building native extensions. This could take a while... 
ERROR: Error installing puma: 
    ERROR: Failed to build gem native extension. 

    /Users/zulhilmi/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20160211-95547-1pdaoaq.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); 
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
/Users/zulhilmi/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:796:20: note: expanded from macro 'rb_str_new' 
     rb_str_new_static((str), (len)) : \ 
          ^~~~~ 
/Users/zulhilmi/.rvm/rubies/ruby-2.2.0/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); 
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
/Users/zulhilmi/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:797:13: note: expanded from macro 'rb_str_new' 
     rb_str_new((str), (len));   \ 
        ^~~~~ 
/Users/zulhilmi/.rvm/rubies/ruby-2.2.0/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: 
/Users/zulhilmi/.rvm/rubies/ruby-2.2.0/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 /Users/zulhilmi/.rvm/rubies/ruby-2.2.0/lib/ruby/gems/2.2.0/gems/puma-2.13.4 for inspection. 

Что я должен делать?

О моем проекте и мое окружение:

  • Руби: 2.2.0 (я использую RVM)
  • Rails: 4.2.0
  • OSX: 10.11.3
+0

Похоже, вам нужно установить зависимости, как OpenSSL: [Link] (http://stackoverflow.com/questions/ 30143180/puma-gem-failed-to-build-gem-native-extension) – Vincent

ответ

18

Вместо (НЕ, рекомендованный в соответствии с этим Github Opened issue), как предложено Zulhilmi Zainudin, Я рекомендую следующее решение на основе номера 783 исходного кода Puma (ссылка ниже).
Я использую El Capitan (10.11) с OpenSSL, установленной с помощью Homebrew:

$ gem install puma -v 2.13.4 -- --with-opt-dir=/usr/local/opt/openssl

Ссылка: https://github.com/puma/puma/issues/783

Но если вы хотите, чтобы заставить его работать на всех ваших Gemfiles вы все еще можете:

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

и подтверждают:
$ grep PUMA ~/.bundle/config

вывод должен быть:

BUNDLE_BUILD__PUMA: "--with-opt-dir=/usr/local/opt/openssl"

Ссылка: https://github.com/puma/puma/issues/718

+1

это просто спасло мою жизнь, спасибо – yuval

Смежные вопросы