Nginx无法找到OpenSSL开发标题

Eth*_*ler 18 macos homebrew openssl nginx

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

Checking for OpenSSL development headers...
  Found: no
Run Code Online (Sandbox Code Playgroud)

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

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

A H*_*H K 54

如果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
Run Code Online (Sandbox Code Playgroud)

现在让我们安装它:

$ brew install openssl
Run Code Online (Sandbox Code Playgroud)

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

$ cd /usr/local/include
$ ln -s ../opt/openssl/include/openssl .
Run Code Online (Sandbox Code Playgroud)

全部完成!请享用

  • 这应该是答案!:d (2认同)
  • 接受的答案已过时. (2认同)

man*_*007 18

如果您使用的是Mac OS X El Capitan,Apple不再包含openssl,因为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
Run Code Online (Sandbox Code Playgroud)

  • `$ brew链接openssl --force警告:拒绝链接:openssl链接keg-only openssl意味着你可能在使用Homebrew的openssl的头文件时最终链接到不安全,不赞成的系统OpenSSL.相反,将完整的include/library路径传递给编译器,例如:-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib` (12认同)