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

Macos 如何安装最新版本的openssl Mac OS X El Capitan,macos,openssl,homebrew,Macos,Openssl,Homebrew,我曾使用brew安装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_reha

我曾使用
brew安装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版本-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"

如何用新版本替换旧版本?关于如何实现这一点,我已经搜索了很多,但联机解决方案似乎对我不起作用…

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

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

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

brew link --force openssl
再次检查openssl的版本。它应该被更改。

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

升级至9月底发布的自制1.0.x。该项目现在已经达到1.0版本,发布进度更加稳健

brew uninstall openssl
在继续操作之前,您应该修复brew doctor提出的任何问题

brew install openssl
注意:升级homebrew会将所有安装的软件包更新为最新版本。

仅限

export PATH=$(brew --prefix openssl)/bin:$PATH in ~/.bash_profile
他为我工作!
谢谢你,mipadi。

当我搜索有关openssl仅为keg的信息时,我到达了这个页面。我相信我已经理解了Homebrew现在采取这一行动的原因。我的解决方案可能适用于您:

  • 使用以下命令使新的openssl命令可用(假设已将路径调整为在/usr/bin之前放置/usr/local/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_配置文件或.bashrc中放置以下行,使这些设置永久化:
    
    导出CPATH=/usr/local/opt/openssl/include
    导出库路径=/usr/local/opt/openssl/lib
    


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

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

更多信息请访问。

执行以下命令:

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

您将安装最新版本的openssl,并可从cli(命令行/终端)访问。由于第三个命令将把导出路径添加到
.bash\u profile
,新安装的openssl版本将可以在系统重新启动时访问。

这是一个老问题,但在今天的上下文中仍然回答它,因为上面的许多答案现在可能不起作用

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

  • 卸载旧版本的openssl软件包
    brew卸载openssl
    ,然后重新安装新版本:
    brew安装openssl
  • 指向openssl新版本的路径。首先安装新版本,现在(或者如果)已安装最新版本,请指向它的路径:
    echo'export PATH=“/usr/local/opt/openssl/bin:$PATH”>~/.bash\u profile

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

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

    brew链接之后
    ,至少对我来说,OpenSSL似乎已更新。但有些事情并不“正确”。我执行了
    brew doctor
    ,其中有一个关于只桶公式的警告,这是所有输出的子字符串:
    只桶公式提供的二进制文件可能会用其他奇怪的结果覆盖系统二进制文件。
    并建议
    brew取消openssl的链接。应该忽略吗?@Knaak这在自制0.9.9的El Capitan上不起作用。它响应消息
    警告:拒绝链接:openssl
    。否;如果你这样做,自制软件会对你大喊大叫。请参阅,以了解有关仅桶依赖关系的解释。如上所述,您可以使用
    --force
    进行覆盖,但您应该了解这样做的潜在后果。您解决了这个问题吗?@ksl Nope!:/没有一个答案对我有用。不,不要这样做。它将升级所有内容。添加了有关更新的免责声明。随着时间的推移,将自制软件升级到1.x版将变得越来越必要。据我所知,该问题已在自制1.x中解决。谢谢。在版本1.x上,
    brew upgrade
    并不能升级所有内容?@b甚至可能有必要克服其他库问题?我为像我这样的人找到了util,他们阅读了关于如何链接上一个openssl的所有内容。这也是我在osX Sierra上唯一有效的方法,没有禁用SIP。谢谢您的链接已不存在。@Hauke已更新!这解决了我的问题,在尝试了一个多小时的其他方法后,谢谢你。真是太棒了!当我运行
    $openssl版本
    时,我得到
    openssl 0.9.8zh 2016年1月14日
    但当我运行
    $brew安装openssl
    时,我得到
    警告:openssl 1.0.2l已安装
    。这是否意味着我安装了两个版本?我想,您的系统中现在有两个版本的openssl。一个默认用于mac,另一个使用brew安装。执行上述第三和第四个命令,从命令行访问openssl的最新版本(1.0.2l)。关键是使用
    /usr/local/opt/openssl/bin/openssl
    而不是
    /usr/bin/openssl
    brew update
    brew install openssl
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile