Подтвердить что ты не робот

Ошибка сборки Eventmachine gem

Я не могу установить eventmachine

Хорошо, я знаю, что это было задано довольно много, но никакие решения, которые я нашел, не помогли мне до сих пор. Поэтому я опубликовал здесь в качестве последнего средства.

Я использую windows 8 x64 с помощью ruby 2.0.0p195 (x64) (установлен через Ruby Installer для 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 depencency), поэтому я думаю, что это может иметь некоторую актуальность, также не может установить тонкие

Для любой информации просто спросите

Спасибо всем заранее!

4b9b3361

Ответ 1

Я мог бы установить его, выполнив следующие шаги:

1) попробовал обычную установку:

gem install eventmachine

он извлек версию 1.0.3 из gem, но не сработал в make из-за объявления переменной conflit

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

Вам понадобится git с git.exe в PATH, чтобы это работало (например, C:\Users\YourUsername\AppData\Local\GitHub\PORTAB ~ 1\bin).

4) он сгенерировал файл eventmachine.gem в папке... Поэтому я скопировал файл в папку c:\tmp и пошел в эту папку, а оттуда я набрал:

gem install eventmachine-1.0.3.gem --local

И он успешно установлен!

Ответ 2

Это сработало для меня:

brew link openssl --force 

Ответ 3

Я получил ошибку, как показано ниже


C:\Ruby200-x64\lib\ruby ​​\ gems\2.0.0\gems\eventmachine-1.0.3 > gem build eventmachine.gemspec Недопустимый gemspec в [eventmachine.gemspec]: нет такого файла или каталога - git ls-files

ОШИБКА: Ошибка при загрузке gemspec. Aborting.

Однако я сохранил проект .h, открытый в текстовой панели, и попытался выполнить gem install eventmachine. В какой-то момент текстовая панель запросит подтверждение для перезагрузки project.h, поскольку новый файл извлекается из команды установки gem. Просто дайте reload и прокомментируйте строку //typedef int pid_t;.. Затем компиляция прошла.

в основном, требуется некоторое время, чтобы начать компиляцию после извлечения файлов проекта gem. Просто используйте это время, чтобы прокомментировать htis строку.. Это сработало для меня.. может не работать для всех.

Ура!

Ответ 4

У меня была такая же проблема, и я успешно ее запускал, добавив ниже в начале Gemfile:

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

До этого я удалил eventmachine.

Ответ 5

Сегодня я столкнулся с аналогичными проблемами для eventmachine gem (для обеих версий 1.0.3 и 1.0.4) при обновлении до Ruby 2.2.0. И я исправил его, установив последние "инструменты для разработчиков" для MAC OSX 10.10.1 Yosemite и XCode 6.1.1

Вот мое подробное сообщение в блоге для решения этой проблемы с установкой eventmachine gem - http://kiprosh.com/blog/208

Ответ 6

У меня была такая же проблема в Linux.

Я решил это, обновив ruby ​​до ruby-2.2.1.

Ответ 7

Попробуйте

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

Ответ 8

Вышеприведенный ответ о том, как скомпилировать, не работал у меня, так как я получил сообщение "не могу загрузить такой файл". Я решил эту проблему, выполнив gem build eventmachine.gemspec из git checkout репозитория eventmachine.

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

Вы должны уметь видеть, что размер файла .gem намного больше, так как он действительно содержит правильный код.

Ответ 9

Вы можете попробовать этот ответ здесь: Rails - невозможно запустить приложение: невозможно загрузить расширение EventMachine C;

Принят ответ на этот вопрос. Но у вас будут другие проблемы, как показано в комментариях ниже.

Следуйте по решению suda в ссылке, все будет в порядке.

(На самом деле, это в основном компиляция и установка gem из репозитория master github. Я был удивлен, что они еще не поставили исправление проблемы в мастер, поскольку они знают об этом.)