我无法安装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)所以我认为它可能有一些相关性,也无法安装瘦身
如有任何信息,请询问
提前谢谢大家!!
答案 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
但是,我保持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。我很惊讶他们还没有把问题修复到主人,因为他们已经意识到了这一点。 )