Reputation: 21088
Just installed El Capitan and can't install gem eventmachine
1.0.7
. openssl
is at 1.0.2a-1
. Tried to use --with-ssl-dir
but it seems ignored.
Reported it to their github repo as well.
Any suggestions are really appreciated. Thanks.
$ 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
Upvotes: 316
Views: 72969
Reputation: 11
The solution that worked for me was:
I had similar eventmachine issues on MAC M1 installing Jekyll. While this is inspired by Stackoverflow running brew link --force openssl
did NOT solve my issues.
I could solve these Openssl issues as follows:
Run brew --prefix openssl
to check the openSSL path. If OpenSSL is not installed, install it first.
Run bundle config build.eventmachine --with-openssl-dir=$(brew --prefix openssl)
.
Run bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
.
Run bundle
Can't install Jekyll - "fatal error: 'openssl/ssl.h' file not found"
Upvotes: 1
Reputation: 1413
Using Ventura 13.2.1 and Ruby 3.1.2, only this worked for me:
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/[email protected]/include
Upvotes: 3
Reputation: 1491
With openssl@3
with Homebrew it worked by running this command:
gem install eventmachine -- --with-openssl-dir=/usr/local/opt/openssl@3/bin/openssl
NOTE the /bin/openssl
at the end which made the difference for me.
Upvotes: 0
Reputation: 1547
I met the same eventmachine issue and the answers above didn't work for me, finally reinstall ruby with given openssl version works:
rvm reinstall 3.1.2 --with-openssl-dir=/usr/local/opt/openssl@3
Upvotes: 5
Reputation: 594
As of 2022, the way to install eventmachine, assuming brew install openssl
has already installed successfully, is: gem install eventmachine -- --with-cppflags=-I/opt/homebrew/opt/openssl/include
Notice that the include directory has moved.
Upvotes: 1
Reputation: 2028
This installed it for me:
gem install eventmachine -- --with-openssl-dir=/usr/local/opt/[email protected]
I got it from the eventmachine Github repo. Evidently OpenSSL tools were moved / removed from MacOS at some point.
In my case, I wanted to install something else (mailcatcher) with a dependency on eventmachine. I did this by replacing eventmachine
with mailcatcher
in the above command.
Upvotes: 2
Reputation: 32107
This looks like a more recent issue: https://github.com/eventmachine/eventmachine/issues/936
I solved this problem on macOS 12.3.1
with the following:
M1 Max:
gem install eventmachine -- --with-openssl-dir=/opt/homebrew/Cellar/[email protected]/1.1.1n/
Intel:
gem install eventmachine -- --with-openssl-dir=/usr/local/Cellar/[email protected]/1.1.1n/
Upvotes: 8
Reputation: 9045
For Jekyll and Fish:
gem install jekyll -- --with-cppflags=-I(brew --prefix openssl)/include
Upvotes: 1
Reputation: 386
gem pristine eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
pristine removes the old gem and recompiles it.
The cpp flags option allows the compiler to find the openssl headers.
If you prefer to abstract away the cpp flags argument, you can do the following:
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig"
You can also add the version if you like:
gem pristine eventmachine -v '1.0.4' -- --with-cppflags=-I/usr/local/opt/openssl/include
Upvotes: 19
Reputation: 971
I was trying to install v 1.0.3 and this worked for me.
gem install eventmachine -v '1.0.3' -- --with-cppflags=-I/usr/local/opt/openssl/include
These discussions were very helpful: https://github.com/eventmachine/eventmachine/issues/602
This assumes the machine already has openssl installed via brew
.
Upvotes: 14
Reputation: 4054
This worked for me -
gem install eventmachine -v '1.0.7' -- --debug --backtrace --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
Building native extensions with: '--debug --backtrace --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed eventmachine-1.0.7
Parsing documentation for eventmachine-1.0.7
Installing ri documentation for eventmachine-1.0.7
Done installing documentation for eventmachine after 9 seconds
1 gem installed
NOTE:- Before I was able to successfully install this gem, I had to do a few things. These might apply to you, so listing them here -
1.) got off the corporate-VPN OR you might have to turn ON proxy settings
2.) PKG_CONFIG_PATH was set to -
echo $PKG_CONFIG_PATH
/usr/local/opt/openssl/lib/pkgconfig
3.) had to add the following to $PATH in bash_profile (in my case ~/.zshrc)
export PATH="/usr/local/opt/openssl/bin:$PATH"
4.) Also note, that contrary to some answers I got in this SO post, and also this thread on github-eventmachine, I was not able to install eventmachine
gem install eventmachine -v '1.0.7' -- --debug --backtrace --with-cppflags=-I/usr/local/include --with-ldflags=-L/usr/local/lib
Fetching: eventmachine-1.0.7.gem (100%)
Building native extensions with: '--debug --backtrace --with-cppflags=-I/usr/local/include --with-ldflags=-L/usr/local/lib'
This could take a while...
ERROR: Error installing eventmachine:
ERROR: Failed to build gem native extension.
It seems /usr/local/opt/openssl/include
is the right location and not /usr/local/include
when specifying the openssl location.
Upvotes: 4
Reputation: 3500
This solved the problem for me:
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"
Source: https://github.com/sj26/mailcatcher/issues/254
Upvotes: 9
Reputation: 147
One alternative is to add a bundler config entry for your whole user profile, like this:
cd ~
bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
it'll create a .bundle/config file in your home directory, which is then used in all your projects when you run bundle install
.
Upvotes: 5
Reputation: 17919
brew link --force openssl
Then:
gem install eventmachine
It also fixes:
P.S. Probably you'll need to remove and run brew install openssl
again
The issue happends because Apple had removed openssl from OSX (in El Captain build)
Upvotes: 128
Reputation: 238617
If you're installing EventMachine as a dependency of another gem, be sure to specify the correct version when you manually install the gem:
gem install eventmachine -v 1.0.5 -- --with-cppflags=-I$(brew --prefix openssl)/include
Then you can install the gem that you were originally trying to install:
gem install mailcatcher
Upvotes: 8
Reputation: 21088
$ 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
You can also set up bundler like this but I think that is superficial
bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
Upvotes: 581
Reputation: 6713
When using bundler and homebrew:
$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
Upvotes: 266