如何安装最新版本的 openssl Mac OS X El Capitan

Posted

技术标签:

【中文标题】如何安装最新版本的 openssl Mac OS X El Capitan【英文标题】:How to install latest version of openssl Mac OS X El Capitan 【发布时间】:2016-05-09 20:54:51 【问题描述】:

我已经使用brew install openssl 下载并安装了openssl v1.0.2f,但是,它回来说:

A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

当我做openssl version -a 时,它总是给我:

OpenSSL 0.9.8zg 14 July 2015
built on: Jul 31 2015
platform: darwin64-x86_64-llvm
options:  bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) blowfish(idx) 
compiler: -arch x86_64 -fmessage-length=0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -O3 -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DMD32_REG_T=int -DOPENSSL_NO_IDEA -DOPENSSL_PIC -DOPENSSL_THREADS -DZLIB -mmacosx-version-min=10.6
OPENSSLDIR: "/System/Library/OpenSSL"

如何用新版本替换旧版本?我已经搜索了很多关于如何做到这一点,但网上的解决方案似乎对我不起作用......

【问题讨论】:

你解决了吗? @ksl 不! :/ 没有一个答案对我有用。 【参考方案1】:

这个命令解决了我在 github CI job 和 virtualbox 上的问题

brew install openssl@1.1
cp /usr/local/opt/openssl@1.1/lib/pkgconfig/*.pc /usr/local/lib/pkgconfig/

【讨论】:

【参考方案2】:

这是一个古老的问题,但在当今的背景下仍然可以回答,因为上述许多答案现在可能不起作用。

问题是路径仍然指向旧版本。可以提供两种解决方案:

    卸载旧版本的openssl包brew uninstall openssl然后重新安装新版本:brew install openssl 将路径指向新版本的openssl。首先安装新版本,现在(或如果)您已经安装了最新版本,请指向它的路径:echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

【讨论】:

【参考方案3】:

只有

export PATH=$(brew --prefix openssl)/bin:$PATH in ~/.bash_profile

对我有用! 谢谢米帕迪。

【讨论】:

我发现 util 适合像我一样尝试了他们所读到的有关如何链接最后一个 openssl 的所有内容。 这也是我在 osX Sierra 上唯一有效的方法,无需禁用 SIP。谢谢! 这会严重拖慢您的终端速度。【参考方案4】:

执行以下命令:

brew update
brew install openssl
echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

您将安装最新版本的 openssl,并可从 cli(命令行/终端)访问。由于第三条命令会将导出路径添加到.bash_profile,因此新安装的 openssl 版本将在系统重启后访问。

【讨论】:

当我运行$ openssl version 时,我得到OpenSSL 0.9.8zh 14 Jan 2016,但是当我运行$ brew install openssl 时,我得到Warning: openssl 1.0.2l is already installed。这是否意味着我安装了两个版本? 我猜,您的系统中现在有 2 个版本的 openssl。一种默认情况下可用于 mac,另一种是您使用 brew 安装的。执行上面第三条和第四条命令,从命令行访问最新版本(1.0.2l)的openssl。 关键是使用/usr/local/opt/openssl/bin/openssl而不是你的/usr/bin/openssl【参考方案5】:

尝试创建一个符号链接,确保首先在 /usr/local/include 中安装了 openssl。

ln -s /usr/local/Cellar/openssl/version/include/openssl /usr/local/include/openssl

更多信息请访问Openssl with El Capitan。

【讨论】:

您的链接已不存在。 @Hauke 更新了! 这解决了我的问题,在尝试了其他所有方法一个多小时后,谢谢。 太棒了!【参考方案6】:

当我搜索有关 openssl 仅限小桶的信息时,我到达了此页面。我相信我已经理解 Homebrew 现在采取这种行动的原因了。我的解决方案可能对你有用:

使用以下命令使新的 openssl 命令可用(假设您已调整 PATH 以将 /usr/local/bin 放在 /usr/bin 之前): ln -s /usr/local/opt/openssl/bin/openssl /usr/local/bin/

使用 openssl 编译时,请遵循 Homebrew 的建议并使用 -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

或者,您可以通过将以下几行放入 .bash_profile 或 .bashrc 中来使这些设置永久化: export CPATH=/usr/local/opt/openssl/include export LIBRARY_PATH=/usr/local/opt/openssl/lib

【讨论】:

【参考方案7】:

我无法重现运行 El Cap + Homebrew 1.0.x 的问题

升级到 9 月底发布的 Homebrew 1.0.x。 Specific changes were made in the way openssl is linked。该项目已经发布到 1.0 版本,发布计划更加稳健。

brew uninstall openssl
brew update && brew upgrade && brew cleanup && brew doctor

您应该先解决brew doctor 提出的任何问题,然后再继续。

brew install openssl

注意: 升级自制软件会将所有已安装的软件包更新到最新版本。

【讨论】:

不,不要这样做。它会升级一切。 添加了关于更新的免责声明。随着时间的推移,将 homebrew 升级到 1.x 版本将变得越来越有必要。据我所知,该问题已在自制 1.x 中得到解决。 谢谢。在 1.x 版本上,brew upgrade 不会升级所有内容? @BSeven 也许有必要克服其他库问题?【参考方案8】:

要用新版本替换旧版本,您需要更改它的链接。将该命令键入到终端。

brew link --force openssl

再次检查 openssl 的版本。应该改了。

【讨论】:

brew link 之后,至少对我而言,OpenSSL 似乎已更新。但有些事情不是“正确的”。我执行了brew doctor 并且有一个keg-only 公式的警告,这是所有输出的子字符串:Binaries provided by keg-only formulae may override system binaries with other strange results. 并建议brew unlink openssl。应该忽略吗? @Knaak 这不适用于带有 Homebrew 0.9.9 的 El Capitan。它以消息Warning: Refusing to link: openssl 进行响应。【参考方案9】:

如果您不介意警告消息中突出显示的潜在问题,您可以运行brew link openssl 将其链接到/usr/local。否则,您可以将 openssl bin 目录添加到您的路径:

export PATH=$(brew --prefix openssl)/bin:$PATH

【讨论】:

否;如果你这样做,Homebrew 会冲你大喊大叫。查看 ***.com/a/17016758/17597 以获得对仅桶依赖项的解释。正如上面答案中提到的,您可以使用--force 覆盖,但您应该了解这样做的潜在后果。

以上是关于如何安装最新版本的 openssl Mac OS X El Capitan的主要内容,如果未能解决你的问题,请参考以下文章

在最新版本的 Mac OS X 上安装旧版本的 MySQL 5.5

如何将Mac OS X10.9下的Python2.7升级到最新的Python3.3

无法从MAC OS 10.14.2上的源代码安装MongooseIM

Mac 升级 OpenSSL 安装 Tengine

在VMware上安装MAC OS10.15最新版本并安装Xcode11.4教程(所有坑已经走过)

如何在 Mac OS X 上安装特定的 JDK?