关于macOS:如何安装最新版本的openssl Mac OS X El Capitan

How to install latest version of openssl Mac OS X El Capitan

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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时,它总是给我:

1
2
3
4
5
6
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"

如何用新版本替换旧版本? 我已经搜索了很多有关如何执行此操作的方法,但是在线解决方案似乎对我不起作用...


执行以下命令:

1
2
3
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版本。


只要

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

为我工作!
谢谢mipadi。


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

1
ln -s /usr/local/Cellar/openssl/{version}/include/openssl /usr/local/include/openssl

与El Capitan一起在Openssl上获取更多信息。


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

升级到9月下旬发布的Homebrew1.0.x。对opensl的??链接方式进行了特定更改。现在该项目的发布时间是1.0,现在的发布时间表更加稳健。

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

您应先解决brew doctor引起的所有问题,然后再继续。

1
brew install openssl

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


当我搜索关于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


此命令解决了我在github CI作业和virtualbox上的问题

1
2
brew install [email protected]
cp /usr/local/opt/[email protected]/lib/pkgconfig/*.pc /usr/local/lib/pkgconfig/

这是一个古老的问题,但在当前情况下仍要回答,因为上述许多答案现在可能无法解决。

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

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

  • 要将旧版本替换为新版本,您需要更改其链接。在终端上键入该命令。

    1
    brew link --force openssl

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


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

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