Nginx 找不到 OpenSSL 开发Headers

Nginx Cannot Find OpenSSL Development Headers

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

Checking for OpenSSL development headers...
  Found: no

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

如果你在 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

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

警告:拒绝 link:openssl 链接 keg-only openssl 意味着您可能最终 link 在使用 headers 来自自制软件的 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

现在我们将 link 它放入我们的 public 区域,这样您在构建您最喜欢的 OpenSSL-backed 库时就不必弄清楚要设置的神奇环境变量:

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

大功告成!享受