gem eventmachine致命错误:' openssl / ssl.h'文件未找到

时间:2015-06-13 11:56:49

标签: ruby macos openssl homebrew eventmachine

刚刚安装了El Capitan,无法安装gem <?php <form action="form1.php" method="POST"> username <input type="text" name="username"><br /> password <input type="password" name="password"><br /> <input type="submit" name="submitbutt" value="Login!"><br /> </form> ?> eventmachine1.0.7位于openssl。试图使用1.0.2a-1,但它似乎被忽略了。

同时向他们的github repo报告。

非常感谢任何建议。感谢。

--with-ssl-dir

9 个答案:

答案 0 :(得分:513)

$ 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

答案 1 :(得分:231)

使用bundler和homebrew时:

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install

答案 2 :(得分:114)

brew link --force openssl

然后:

gem install eventmachine

它还修复了:

  • gem install taks
  • 捆绑安装
  • rake and rails任务

P.S。您可能需要删除并再次运行brew install openssl

问题正在发生,因为Apple已经从OSX中移除了openssl(在El Captain构建中)

答案 3 :(得分:13)

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

pristine删除旧的gem并重新编译它。

cpp flags选项允许编译器找到openssl头文件。

如果您愿意,也可以添加版本:

gem pristine eventmachine -v '1.0.4' -- --with-cppflags=-I/usr/local/opt/openssl/include

答案 4 :(得分:8)

我试图安装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

答案 5 :(得分:7)

如果您正在安装EventMachine作为另一个gem的依赖项,请务必在手动安装gem时指定正确的版本:

gem install eventmachine -v 1.0.5 -- --with-cppflags=-I$(brew --prefix openssl)/include

然后您可以安装最初尝试安装的gem:

gem install mailcatcher

答案 6 :(得分:4)

另一种方法是为整个用户配置文件添加一个bundler配置条目,如下所示:

cd ~
bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include

它会在您的主目录中创建一个.bundle / config文件,然后在您运行bundle install时在所有项目中使用该文件。

答案 7 :(得分:4)

这解决了我的问题:

PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"

来源:https://github.com/sj26/mailcatcher/issues/254

答案 8 :(得分:0)

这对我有用 -

    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

注意: - 在我成功安装此gem之前,我必须做一些事情。这些可能适用于您,因此请在此处列出 -

1。)离开了企业VPN     或者您可能必须打开代理设置

2。)PKG_CONFIG_PATH设置为 -

echo $PKG_CONFIG_PATH
/usr/local/opt/openssl/lib/pkgconfig

3.。)必须将以下内容添加到bash_profile中的$ PATH中(在我的情况下为〜/ .zshrc)

export PATH="/usr/local/opt/openssl/bin:$PATH"

4。)另请注意,与我在SO帖子中得到的一些答案相反,以及github-eventmachine上的这个帖子,我无法安装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.

在指定openssl位置时,似乎/usr/local/opt/openssl/include是正确的位置,而不是/usr/local/include