web-dev-qa-db-fra.com

Erreur lors de l'installation de la gemme EventMachine sous OSX Yosemite

Voici la sortie complète du message d'erreur:

    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

Quelqu'un a-t-il déjà vu une erreur comme celle-ci? J'ai les outils de ligne de commande - jamais rencontré une erreur en compilant ce joyau sur mon ancien ordinateur portable fonctionnant également sous Yosemite.

26
tgmerritt

EventMachine 1.0.3 n’a pas fonctionné avec Ruby 2.2 . Ce problème a été résolu dans EventMachine 1.0.4. Vous pouvez probablement résoudre votre problème en mettant à niveau EventMachine avec

bundle update eventmachine
47
tantrix

Pour El Capitan, cela a fonctionné pour moi:

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

si vous avez installé une brasserie, essayez 

brew install openssl

et s'il dit encore, 

Warning: openssl-1.0.2e already installed

puis lancez cette commande, 

brew link openssl --force

ça fera l'affaire. :)

13
kushvarma

Essaye ça

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

Si la réponse ci-dessus ne vous aide pas, vous pouvez essayer de déclasser votre version de Ruby à la version 2.1.2. Cela a fait le tour pour moi (OS 10.10.2). Ajoutez ceci au sommet de votre Gemfile:

Ruby '2.1.2'
1
maxhm10

Je me souviens d'avoir installé une autre pierre précieuse nécessitant eventmachine et qui me posait des problèmes de fenêtres. J'ai dû installer DevKit tools et cela a résolu mon problème. désolé, je ne peux pas fournir plus de détails, mais j'espère que cela vous aidera à résoudre votre problème. vous pouvez également essayer ce que Prakash a partagé ci-dessus . Je devais me mettre à jour à la fin après avoir installé Devkit. 

0
Omar Sar

Je comprends que cette question a été posée il ya assez longtemps, mais j’ai vu cette erreur tout à l’heure et après avoir essayé toutes les réponses et lutté avec cela et avec un autre bijou, j’ai réalisé que j’essayais d’installer un projet assez ancien et par conséquent, certaines pierres précieuses n'étaient pas compatibles avec les bibliothèques actuelles et la plupart d'entre elles étaient en fait des exigences pour les pierres précieuses du projet.

Ce que j’ai alors fait, c’est de supprimer le fichier Gemfile.lock et de laisser bundler le recréer avec des références plus actuelles pour les gemmes de dépendance, ce qui a fonctionné pour mon cas. C’est pourquoi je contribue aux autres qui se retrouvent dans la même situation:

rm Gemfile.lock
bundle install

J'espère que cela pourra aider!

0
fagiani