Eventmachine gem安装失败

时间:2013-06-28 09:55:08

标签: ruby eventmachine

我无法安装eventmachine

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

我使用windows 8 x64 <使用 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并从gemfile.lock删除/修改eventmachine 制作一个新的testapp并在那里安装Eventmachine(失败)

我怀疑的事情我追踪了eventmachine的依赖关系(可以在Rubygems上找到),我发现我无法安装bluecloth(显示更大的日志错误),我也不能安装tidy-ext(bluecloth depencency)所以我认为它可能有一些相关性,也无法安装瘦身

如有任何信息,请询问

提前谢谢大家!!

9 个答案:

答案 0 :(得分:59)

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

1)尝试了正常安装:

gem install eventmachine

它获取了gem的1.0.3版本,但是在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

它安装成功!

答案 1 :(得分:34)

这对我有用:

brew link openssl --force 

答案 2 :(得分:11)

我收到如下错误


C:\ Ruby200-x64 \ lib \ ruby​​ \ gems \ 2.0.0 \ gems \ eventmachine-1.0.3&gt; gem build eventmachine.gemspec [eventmachine.gemspec]中的gemspec无效:没有这样的文件或目录 - git ls-files

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

但是,我保持project.h在textpad中打开,并尝试做gem install eventmachine。有一次,当从gem install命令获取新文件时,textpad将要求确认重新加载project.h ..只需重新加载并注释行// typedef int pid_t; ..然后编译经过..

基本上,在获取gem项目文件后需要一段时间才能开始编译。只是利用那段时间来评论htis line ..它对我有用..可能不适合所有人。

干杯!

答案 3 :(得分:8)

尝试

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

答案 4 :(得分:4)

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

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

在此之前我卸载了eventmachine

答案 5 :(得分: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/

答案 6 :(得分:2)

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

我通过将ruby升级到ruby-2.2.1来解决它。

答案 7 :(得分:0)

关于如何编译的上述答案对我来说不起作用,因为我会得到&#34;无法加载这样的文件&#34;信息。我通过从eventmachine repo的git checkout运行gem build eventmachine.gemspec来解决这个问题。

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

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

答案 8 :(得分:0)

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

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

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

(实际上,它基本上是从主github代码库中编译和安装gem。我很惊讶他们还没有把问题修复到主人,因为他们已经意识到了这一点。 )