Подтвердить что ты не робот

Ошибка при установке EventMachine gem на OSX Yosemite

Вот полный вывод сообщения об ошибке:

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

    /Users/Tyler/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20141229-47086-wfdm3m.rb extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... no
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for sys/event.h... yes
checking for sys/queue.h... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling binder.cpp
compiling cmain.cpp
compiling ed.cpp
compiling em.cpp
em.cpp:827:9: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
        return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
               ^~~~~~~~
               rb_thread_fd_select
./em.h:25:20: note: expanded from macro 'EmSelect'
  #define EmSelect rb_thread_select
                   ^
/Users/Tyler/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
    ^
em.cpp:827:32: error: cannot initialize a parameter of type 'rb_fdset_t *' with an rvalue of type 'fd_set *'
        return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
                                      ^~~~~~~~
/Users/Tyler/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:42: note: passing argument to parameter here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
                                         ^
em.cpp:946:6: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
                                        EmSelect (0, NULL, NULL, NULL, &tv);
                                        ^~~~~~~~
                                        rb_thread_fd_select
./em.h:25:20: note: expanded from macro 'EmSelect'
  #define EmSelect rb_thread_select
                   ^
/Users/Tyler/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
    ^
3 errors generated.
make: *** [em.o] Error 1

make failed, exit code 2

Кто-нибудь видел такую ​​ошибку раньше? У меня есть инструменты командной строки - никогда не сталкивался с ошибкой, компилирующей этот камень на моем старом ноутбуке, также работающем с Yosemite.

4b9b3361

Ответ 1

EventMachine 1.0.3 не работал с Ruby 2.2. Это было исправлено в EventMachine 1.0.4. Скорее всего, вы можете исправить свою ситуацию, обновив EventMachine с помощью

bundle update eventmachine

Ответ 2

Для Эль-Капитана это сработало для меня:

$ bundle update eventmachine # updated to v1.0.8
$ bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
$ bundle install

Ответ 3

если у вас установлена ​​ brew, попробуйте

brew install openssl

и если он все еще говорит,

Warning: openssl-1.0.2e already installed

затем запустите эту команду,

brew link openssl --force

он сделает трюк.:)

Ответ 4

Попробуйте это

gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include

Ответ 5

В случае, если приведенный выше ответ вам не поможет, вы можете попытаться понизить версию Ruby до версии 2.1.2. Это сделало трюк для меня (OS 10.10.2). Добавьте это вверху вашего Gemfile:

ruby '2.1.2'

Ответ 6

Я помню, как устанавливал другой камень, который требовал eventmachine, и это давало мне проблемы в окнах. Мне пришлось установить DevKit и решить эту проблему. извините, я не могу предоставить более подробную информацию, но я надеюсь, что это поможет решить вашу проблему. вы также можете попробовать, что Prakash поделил выше. Я должен был обновить себя в конце после установки Devkit.

Ответ 7

Я понимаю, что этот вопрос задан довольно давно, но я видел эту ошибку только сейчас, и после попытки всех ответов и борьбы с этим и еще несколькими драгоценными камнями я понял, что, когда я пытался установить довольно и поэтому некоторые драгоценные камни были несовместимы с текущими библиотеками, и большинство из них были фактически требованиями к фактическим проектным камням.

Тогда я удалил файл Gemfile.lock, и bundler заново создаст его с более актуальными ссылками для драгоценных камней зависимости, и это сработало для моего случая, и поэтому я вношу вклад в других, которые в конечном итоге попадают в ту же ситуацию

rm Gemfile.lock
bundle install

Надеюсь, что это поможет!