Nginx无法找到OpenSSL开发标题

时间:2015-10-06 00:46:21

标签: macos nginx openssl homebrew

当我在Mac上运行:rvmsudo passenger-install-nginx-module以安装nginx时,终端会打印:

Checking for OpenSSL development headers...
  Found: no

但我确定我已经安装了openssl。 which openssl返回/usr/local/openssl/bin/openssl/usr/local/openssl/bin:是$ PATH中的第一个条目。我的问题是:

  • OpenSSL开发标题是否包含在通过自制软件安装的常规openssl中?
  • 如果不是,我应该从哪里下载?

2 个答案:

答案 0 :(得分:53)

如果brew link openssl --force给您这条消息:

警告:拒绝链接:openssl链接keg-only openssl意味着您可能会在使用Homebrew的openssl标题时最终链接到不安全,已弃用的系统OpenSSL。相反,将完整的include / library路径传递给编译器,例如:-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

试试这个:

$ brew doctor (now fix anything that it tells you to fix)
$ brew update
$ brew upgrade

现在让我们安装它:

$ brew install openssl

现在我们将它链接到我们的公共区域,这样您就不必在构建自己喜欢的OpenSSL支持的库时找出要设置的神奇环境变量:

$ cd /usr/local/include
$ ln -s ../opt/openssl/include/openssl .

全部完成!享受

答案 1 :(得分:18)

如果您使用的是Mac OS X El Capitan,由于openssl存在安全问题,Apple不再包含openssl,我在安装Passenger方面遇到类似问题。 brew只是在没有开发头的情况下安装openssl。

如果您使用的是旧版Mac OS X而不是El Capitan,则可以使用: xcode-select --install 它也安装了openssl开发头文件。

修改

更新brew并安装openssl并强制将openssl链接到brew版本解决了我的问题:

$ brew update 
$ which openssl  
/usr/bin/openssl 
$ brew install openssl
$ brew link openssl --force 
$ which openssl 
/usr/local/bin/openssl