Gem eventmachine фатальная ошибка: файл "openssl/ssl.h" не найден
Только что установлен El Capitan и не может установить gem eventmachine
1.0.7
. openssl
находится в 1.0.2a-1
. Пытался использовать --with-ssl-dir
, но он проигнорирован.
Сообщал об этом github repo.
Любые предложения действительно оценены. Спасибо.
$ ls /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h
/usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h
$ gem install eventmachine -v '1.0.7' -- --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include
/Users/pain/.rbenv/versions/2.1.2/bin/ruby -r ./siteconf20150612-56154-1hsjz2n.rb extconf.rb --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... 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... yes
checking for rb_thread_fd_select()... yes
checking for rb_fdset_t in ruby/intern.h... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for sys/event.h... yes
checking for sys/queue... yes
checking for clock_gettime()... no
checking for gethrtime()... no
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling binder.cpp
In file included from binder.cpp:20:
./project.h:116:10: fatal error: 'openssl/ssl.h' file not found
#include <openssl/ssl.h>
^
1 error generated.
make: *** [binder.o] Error 1
make failed, exit code 2
Ответы
Ответ 1
$ gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include'
This could take a while...
Successfully installed eventmachine-1.0.8
1 gem installed
Вы также можете настроить такой пакет, но я думаю, что это поверхностный
bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
Ответ 2
При использовании bundler и homebrew:
$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
Ответ 3
brew link --force openssl
Тогда:
gem install eventmachine
Он также фиксирует:
- gem install taks
- установить пакет
- задачи rake и rails
P.S. Вероятно, вам нужно будет удалить и снова запустить brew install openssl
Проблема возникает из-за того, что Apple удалила openssl из OSX (в сборке El Captain)
Ответ 4
gem pristine eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
pristine удаляет старый драгоценный камень и перекомпилирует его.
Параметр cpp flags позволяет компилятору находить заголовки openssl.
Вы также можете добавить версию, если хотите:
gem pristine eventmachine -v '1.0.4' -- --with-cppflags=-I/usr/local/opt/openssl/include
Ответ 5
Если вы устанавливаете EventMachine как зависимость от другого драгоценного камня, не забудьте указать правильную версию при ручной установке драгоценного камня:
gem install eventmachine -v 1.0.5 -- --with-cppflags=-I$(brew --prefix openssl)/include
Затем вы можете установить драгоценный камень, который вы изначально пытались установить:
gem install mailcatcher
Ответ 6
Я пытался установить v 1.0.3, и это сработало для меня.
gem install eventmachine -v '1.0.3' -- --with-cppflags=-I/usr/local/opt/openssl/include
Эти обсуждения были очень полезными. https://github.com/eventmachine/eventmachine/issues/602
Ответ 7
Один из вариантов заключается в добавлении записи конфигурации пакета для всего профиля пользователя, например:
cd ~
bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
он создаст файл .bundle/config в вашем домашнем каталоге, который затем будет использоваться во всех ваших проектах при запуске bundle install
.
Ответ 8
Это решило проблему для меня:
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"
Источник: https://github.com/sj26/mailcatcher/issues/254