2014-12-30 10 views
26

Ecco l'output completo del messaggio di errore:Errore durante l'installazione EventMachine gemma su 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 

qualcuno ha visto un errore come questo prima d'ora? Ho gli strumenti della riga di comando - non ho mai incontrato un errore nella compilazione di questo gioiello sul mio vecchio portatile che esegue anche Yosemite.

+4

Vedere https://github.com/eventmachine/eventmachine/issues/553; l'aggiornamento alla versione della macchina degli eventi '1.0.4' risolverà il problema. –

+0

Se ti piace la mia risposta per favore accettala! Grazie – tantrix

risposta

0

Ricordo di aver installato un altro gioiello che richiedeva eventmachine e mi dava problemi in Windows. Ho dovuto installare gli strumenti DevKit e questo ha risolto il mio problema. scusa, non posso fornire ulteriori dettagli, ma spero che aiuti a risolvere il tuo problema. puoi anche provare cosa ha condiviso Prakash above. Ho dovuto aggiornarmi alla fine dopo aver installato Devkit.

+0

Questa domanda riguarda OS X, dal momento che DevKit è specifico per Windows, è improbabile che questa risposta aiuti quelli di noi a provare a creare eventmachine su Mac. –

46

EventMachine 1.0.3 didn’t work with Ruby 2.2. Questo problema è stato risolto in EventMachine 1.0.4. Si può probabilmente risolvere la vostra situazione aggiornando EventMachine con

bundle update eventmachine 
+1

ha funzionato per me. Grazie! –

+0

Non ha funzionato per me. – Nick

1

Nel caso in cui la risposta di cui sopra non ti aiuta, si può provare il downgrade la versione Ruby 2.1.2. Questo ha fatto il trucco per me (OS 10.10.2). Aggiungere questo nella parte superiore del vostro Gemfile:

ruby '2.1.2' 
+0

Ho 'ruby '2.2.2'' ma questo non ha aiutato. – Nick

42

Per El Capitan, questo ha funzionato per me:

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

questa è LA soluzione! – awenkhh

+0

Mi capita 'Si è verificato un errore durante l'installazione di eventmachine (1.0.8), e Bundler non può continuare. – Liroy

+2

La seconda linea ha funzionato per me. Ho avuto problemi con una nuova app (in cui il bundle update eventmachine non ha senso). – bluemihai

13

se avete installato birra, provare

brew install openssl 

e se ancora dice,

quindi eseguire questo comando d,

brew link openssl --force 

farà il trucco. :)

+0

Questo funziona per me su una nuova installazione di El Capitan con Ruby 2.1.6. –

+0

Se non si è in grado di aggiornare le dipendenze dell'app ruby, questa è un'ottima risposta. – RobW

+0

downvoting perché mentre questo risolve il problema, fare 'brew link --force' non è una grande idea. – strugee

3

Prova questa

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

capisco questa domanda è stato chiesto un po 'di tempo fa, ma ho visto questo errore solo ora e dopo aver provato tutte le risposte e alle prese con questo e un altro paio di gemme I Ho capito che stavo cercando di installare un progetto piuttosto vecchio e quindi alcune gemme non erano compatibili con le librerie attuali e la maggior parte di esse erano in realtà requisiti per le gemme del progetto.

Quello che ho fatto è stato quindi rimuovere il file Gemfile.lock e lasciare bundler ricrearlo con riferimenti più attuali per le gemme di dipendenza e che ha lavorato per il mio caso e quindi mi sto contribuendo ad altri che finiscono per la stessa situazione:

rm Gemfile.lock 
bundle install 

Spero che questo aiuti!

Problemi correlati