web-dev-qa-db-ja.com

OSX YosemiteへのEventMachine gemのインストールエラー

エラーメッセージの完全な出力は次のとおりです。

    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

誰かが以前にこのようなエラーを見たことがありますか?私はコマンドラインツールを持っています-ヨセミテを実行している私の古いラップトップでこの宝石をコンパイルするエラーに決して遭遇しませんでした。

26
tgmerritt

EventMachine 1.0.3はRuby 2.2 では機能しませんでした。これはEventMachine 1.0.4で修正されました。EventMachineを

bundle update eventmachine
47
tantrix

エルキャピタンの場合、これは私にとってうまくいきました:

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

醸造インストールがある場合は、試してください

brew install openssl

それでも言うなら

Warning: openssl-1.0.2e already installed

次に、このコマンドを実行します

brew link openssl --force

それはトリックを行います。 :)

13
kushvarma

これを試して

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

上記の答えが役に立たない場合は、あなたのRubyバージョンを2.1.2にダウングレードしてみてください。それは私(OS 10.10.2)のトリックでした。これを上部に追加してくださいあなたのGemfileの:

Ruby '2.1.2'
1
maxhm10

Eventmachineを必要とする別のgemをインストールしたことを覚えています。Windowsで問題が発生しました。 DevKit ツールをインストールする必要があり、それで問題が解決しました。申し訳ありませんが、これ以上の詳細は提供できませんが、問題の解決に役立つことを願っています。 Prakashが共有したもの 上記 を試すこともできます。 Devkitをインストールした後、最終的に自分自身を更新する必要がありました。

0
Omar Sar

私はこの質問がかなり前に尋ねられたことを理解していますが、私はこのエラーを今見ました、そしてすべての答えを試してこれと他のいくつかの宝石と苦労した後、私はかなり古いプロジェクトをインストールしようとしていたときに気づきましたしたがって、一部のGemは現在のライブラリと互換性がなく、それらのほとんどは実際には実際のプロジェクトGemの要件でした。

私がしたことは、Gemfile.lockファイルを削除し、bundlerに依存関係のgemの現在の参照を使用してファイルを再作成することでした。同じ状況:

rm Gemfile.lock
bundle install

お役に立てば幸いです。

0
fagiani