web-dev-qa-db-ja.com

Eventmachine gemのインストールが失敗する

Eventmachineをインストールできません

これは非常に多くの質問が寄せられていることはわかっていますが、これまでのところ解決策は見つかりませんでした。最後の手段としてここに投稿しました。

私はwindows 8 x64を使用してRuby 2.0.0p195 (x64)(適切なDevkitでWindowsのRubyインストーラーを介してインストール)

Error

    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension
C:/Ruby200-x64/bin/Ruby.exe extconf.rb
checking for main() in -lssl... no
checking for rb_trap_immediate in Ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
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... no
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... yes
checking for main() in -lkernel32... yes
checking for main() in -lrpcrt4... yes
checking for main() in -lgdi32... yes
creating Makefile

make
generating rubyeventmachine-x64-mingw32.def
compiling binder.cpp
In file included from c:\users\btdy\downloads\devkit\mingw\bin\../lib/gcc/x86_64
-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/process.h:12:0,
             from c:/Ruby200-x64/include/Ruby-2.0.0/Ruby/win32.h:60,
             from c:/Ruby200-x64/include/Ruby-2.0.0/Ruby/defines.h:153,
             from c:/Ruby200-x64/include/Ruby-2.0.0/Ruby/ruby.h:70,
             from c:/Ruby200-x64/include/Ruby-2.0.0/Ruby.h:33,
             from em.h:24,
             from project.h:150,
             from binder.cpp:20:
c:\users\btdy\downloads\devkit\mingw\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../
../../../x86_64-w64-mingw32/include/sys/types.h:68:16: error: conflicting declar
ation 'typedef _pid_t pid_t'
In file included from binder.cpp:20:0:
project.h:97:13: error: 'pid_t' has a previous declaration as 'typedef int pid_t
'
In file included from project.h:151:0,
             from binder.cpp:20:
ed.h: In member function 'void EventableDescriptor::SetSocketInvalid()':
ed.h:43:40: warning: overflow in implicit constant conversion [-Woverflow]
make: *** [binder.o] Error 1      

私が試したものgem "eventmachine", "~> 1.0.3"またはgem "eventmachine", "~> 1.0.0.beta.4.1"をgemfileに入れ、gemfile.lockからeventmachineを削除/変更して新しいtestappを作成し、そこにEventmachineをインストールする(失敗)

疑わしいことeventmachine(Rubygemsにあります)の依存関係を追跡しましたが、インストールできません bluecloth (さらに大きなログエラーが表示されます)また、インストールすることもできません tidy-ext (bluecloth depencency)したがって、関連性がある可能性があり、薄いインストールもできません

どんな情報についてもちょうど尋ねる

よろしくお願いします!!

28
Vasspilka

次の手順を実行してインストールできます。

1)通常のインストールを試みました:

gem install eventmachine

gemのバージョン1.0.3を取得しましたが、変数宣言conflitのためにmakeに失敗しました

2)ファイルを編集しました:

c:\Ruby200-x64\lib\Ruby\gems\2.0.0\gems\eventmachine-1.0.3\ext\project.h

97行目をコメントしました

//typedef int pid_t;

より堅牢な修正については、こちらのソリューションをご覧ください https://github.com/eventmachine/eventmachine/pull/450/files

3)次に、コマンドプロンプトを開き、gemフォルダーに移動しました

c:\Ruby200-x64\lib\Ruby\gems\2.0.0\gems\eventmachine-1.0.3

そして実行:

gem build eventmachine.gemspec

これを機能させるには、PATHのgit.exeの場所にgitをインストールする必要があります(C:\ Users\YourUsername\AppData\Local\GitHub\PORTAB〜1\binなど)。

4)フォルダーにeventmachine.gemファイルを生成しました...したがって、ファイルをc:\ tmpフォルダーにコピーし、そのフォルダーに移動して、そこから次のように入力しました。

gem install eventmachine-1.0.3.gem --local

そして、正常にインストールされました!

59
Fernando Vieira

これは私のために働いた:

brew link openssl --force 
34
Kai

以下のようにエラーが発生しました


C:\ Ruby200-x64\lib\Ruby\gems\2.0.0\gems\eventmachine-1.0.3> gem build eventmachine.gemspec [eventmachine.gemspec]の無効なgemspec:そのようなファイルまたはディレクトリはありません-git ls-files

エラー:gemspecの読み込みエラー。中止します。

ただし、project.hをテキストパッドで開いたままにして、gem install eventmachineを実行しようとしました。ある時点で、テキストパッドは、gem installコマンドから新しいファイルが取得されると、project.hをリロードするように確認を求めます。

基本的に、gemプロジェクトファイルを取得してからコンパイルを開始するには時間がかかります。その時間を使って、htisの行をコメントしてください。

乾杯!

11
Chandru

試して

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

同じ問題があり、Gemfileの先頭に以下を追加することで問題なく実行できました。

gem 'eventmachine', :git => 'git://github.com/eventmachine/eventmachine.git', :branch => 'master'

その前に、eventmachineをアンインストールしました。

4
Õzbek

Linuxでも同じ問題が発生しました。

Ruby=をRuby-2.2.1にアップグレードすることで解決しました。

2
Neha Suwal

今日、eventmachine gem(バージョン1.0.3と1.0.4の両方)でRuby 2.2.0にアップグレード中に同様の問題に直面しました。MACの最新の「開発者ツール」をインストールすることで修正しました。 OSX 10.10.1 YosemiteおよびXCode 6.1.1

Eventmachine gemのインストールでこの問題を解決するための詳細なブログ記事を次に示します- https://blog.kiprosh.com/upgrading-to-Ruby-2-2-0-issues-installing-gem-eventmachine/

2
Rohan Daxini

ここでこの答えを試すことができます: Rails-アプリを実行できません:EventMachine C拡張をロードできません;

この質問に対する受け入れられた答えは機能します。ただし、以下のコメントに示すように、他の問題も発生します。

リンクのスーダによる解決策に従ってください、あなたは大丈夫です。

(実際、それは基本的にマスターgithubコードリポジトリからgemをコンパイルおよびインストールしています。彼らはそれを知っているので、彼らがまだ問題修正をマスターにプッシュしていないことに驚きました。)

0
Rui Liu

コンパイル方法に関する上記の回答は、「このようなファイルをロードできません」というメッセージが表示されるため、うまくいきませんでした。 eventmachineリポジトリのgitチェックアウトからgem build eventmachine.gemspecを実行することにより、この問題を解決しました。

https://github.com/eventmachine/eventmachine/tree/v1.0.

実際に適切なコードが含まれているため、.gemファイルのサイズがはるかに大きいことがわかります。

0
sparkym3