32

我无法安装 eventmachine

好的,我知道这已经被问了很多,但到目前为止我没有找到任何解决方案对我有帮助。所以我在这里发布作为最后的手段。

我使用 windows 8 x64using ruby 2.0.0p195 (x64)(通过 Ruby Installer for Windows 和适当的 Devkit 安装)

所以错误

    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 并删除/修改 eventmachine 以gemfile.lock 创建一个新的 testapp 并在那里安装 Eventmachine(失败)

我怀疑我跟踪了 eventmachine 的依赖项(可以在 Rubygems 上找到),我发现我既不能安装bluecloth(显示更大的日志错误)也不能安装tidy-ext(bluecloth 依赖)所以我认为它可能有有些相关,也不能装瘦

有关任何信息,请询问

谢谢大家!!

4

9 回答 9

61

我可以安装它,执行以下步骤:

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 文件...所以我将一个文件复制到 ac:\tmp 文件夹,然后转到该文件夹​​,然后从那里输入:

gem install eventmachine-1.0.3.gem --local

并且安装成功!

于 2013-06-30T02:53:09.250 回答
37

这对我有用:

brew link openssl --force 
于 2015-10-21T01:30:12.190 回答
15

尝试

gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
于 2017-03-06T07:22:09.243 回答
11

我收到如下错误


C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\eventmachine-1.0.3>gem build eventmachine.gemspec Invalid gemspec in [eventmachine.gemspec]:没有这样的文件或目录 - git ls-files

错误:加载 gemspec 时出错。中止。

但是,我让 project.h 在 textpad 中打开并尝试执行 gem install eventmachine。在某一时刻,textpad 将要求确认重新加载 project.h,因为新文件是从 gem install 命令获取的。只需重新加载并注释行 //typedef int pid_t;.. 然后编译通过..

基本上,在获取 gem 项目文件后开始编译需要一段时间。只需利用这段时间来评论 htis 行.. 它对我有用.. 可能不适用于每个人。

干杯!

于 2013-07-20T07:56:35.957 回答
6

我遇到了同样的问题,并通过在开头添加以下内容成功地运行它Gemfile

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

在此之前我卸载了eventmachine.

于 2014-12-14T09:55:33.537 回答
2

我今天在升级到 Ruby 2.2.0 时遇到了 eventmachine gem(版本 1.0.3 和 1.0.4)的类似问题。我通过为 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/

于 2015-01-19T14:35:38.260 回答
2

我在linux中遇到了同样的问题。

我通过将 ruby​​ 升级到ruby-2.2.1.

于 2016-04-08T05:15:47.157 回答
0

你可以在这里试试这个答案: Rails - cannot run app: Unable to load the EventMachine C extension;

该问题的已接受答案有效。但是您还会遇到其他问题,如下面的评论所示。

按照链接中suda的解决方案,你会没事的。

(实际上,它基本上是从主 github 代码仓库编译和安装 gem。我很惊讶他们还没有将问题修复推送到 master,因为他们知道这一点。)

于 2014-10-30T18:29:41.967 回答
0

上面关于如何编译的答案对我不起作用,因为我会收到“无法加载此类文件”消息。gem build eventmachine.gemspec我通过从 eventmachine repo 的 git checkout运行解决了这个问题。

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

您应该能够看到 .gem 文件的大小要大得多,因为它实际上包含了正确的代码。

于 2014-09-23T23:52:44.230 回答