MacOS上的OpenSSL 1.0.2m

回答 8 浏览 3.4万 2019-12-14

为了建立一个特定的库,我需要openssl库的1.0.2m版本和开发包。我在macOS上工作。使用brew install openssl安装最新的1.1.1d版本。

Leon Dobnik 提问于2019-12-14
8 个回答
#1楼 已采纳
得票数 40

由于OpenSSL 1.0.2将在2019年底结束,它不再可以通过Homebrew使用。这在Homebrew 2.2.0公告中提到

自己从源代码中构建和安装OpenSSL 1.0.2是相当简单的。你可以从Old 1.0.2 Releases页面下载你需要的版本,然后按照INSTALL中的说明操作。


也许也可以恢复一个较早的公式,然后从那里安装,但我不能保证这样做的效果如何。下面的步骤确实完成了安装过程:

$ git clone https://github.com/Homebrew/homebrew-core.git
$ cd homebrew-core
$ git checkout 75b57384 Formula/openssl.rb
$ brew install Formula/openssl.rb

对我来说,这表明了:

Warning: openssl 1.1.1d is available and more recent than version 1.0.2m.
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2m.high_sierra.bottle.tar.gz

并在那之后愉快地继续前进。最后的快速尝试给人一些信心,认为效果不错:

$ /usr/local/opt/openssl/bin/openssl version
OpenSSL 1.0.2m  2 Nov 2017

如果你不愿意直接使用git,你也可以尝试从gitHub.com下载那个版本的openssl.rb,并在上面运行brew install


如果你想知道那个提交哈希值是怎么来的,我碰巧知道这个公式曾经被称为--惊喜--openssl.rb(但是用git来查询被删除的文件也是可以的)。因此,我检查了Formula/openssl.rb的历史,发现:

$ git log -- Formula/openssl.rb
...
commit 75b573845a17aaf3f7c84dc58e97cf5fe39a502b
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date:   Thu Nov 2 17:20:33 2017 +0000

    openssl: update 1.0.2m bottle.
Reinier Torenbeek 提问于2019-12-14
Reinier Torenbeek 修改于2019-12-15
我花了很长时间才达成一个可行的解决方案--非常感谢你的帮助!你的工作很有成效!reesaspieces 2020-09-14
非常感谢您!我在这个问题上浪费了两天时间!我在这个问题上浪费了两天时间:(SlurpGoose 2020-12-16
使用来自stackoverflow.com/a/61368160/2551154的rbenv/tap/openssl@1.0 是一个更好的解决方案,因为它以openssl@1.0 的形式安装,不太可能与其他软件包冲突。检查出一个旧版本的openssl.rb很可能会引起冲突。Firefishy 2021-03-29
#2楼
得票数 28

最近,由于最近openssl的版本从1.0更新到1.1,我很纠结,想把它恢复到旧版本。除了下面给出的方案外,没有其他解决方案对我有用:

brew install rbenv/tap/openssl@1.0
rvm reinstall 1.9.3-p551 --with-openssl-dir='/usr/local/opt/openssl@1.0'
gem update --system

Akhil Latta 提问于2020-04-22
第一条命令对我来说是有效的,尽管我不得不手动修复/usr/local/opt/openssl/lib中的符号链接,以使其被接收到。Lars Marius Garshol 2020-05-08
惊人的。对我帮助很大!Aryeh Beitz 2020-06-22
@LarsMariusGarshol 如果你不关心是否也有OpenSSL 1.1可用的话,那就可以了。David Moles 2020-08-27
我还必须修复符号链接,我知道下次MacOS更新时,我必须回到这里,所以我将粘贴符号链接命令ln -s /usr/local/opt/openssl@1.0 /usr/local/opt/opensslAlberto 2020-12-16
#3楼
得票数 13

你可以不下载Formula/openssl.rb的具体版本,而是直接使用该文件的原始引用,其中有具体的提交SHA,如提到的这里

因此,最后更新到1.0.2t版本的SHA是8b9d6d688f483a0f33fcfc93d433de501b9c3513。

commit 8b9d6d688f483a0f33fcfc93d433de501b9c3513
Author: BrewTestBot <homebrew-test-bot@lists.sfconservancy.org>
Date:   Sat Sep 28 19:38:49 2019 +0000

    openssl: update 1.0.2t bottle.

因此,我将执行以下命令来安装1.0.2t。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8b9d6d688f483a0f33fcfc93d433de501b9c3513/Formula/openssl.rb
Michael Beausoleil 提问于2020-01-16
对我来说,这个命令导致了一个错误:"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead." :/reesaspieces 2020-09-14
#4楼
得票数 8

1- 下载该文件:

wget https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

2 - 用下载的文件运行BREW:

brew install openssl.rb

Londerson Araújo 提问于2020-09-30
这就成功了!我不得不先通过"brew install wget"安装wget,它沿途更新了一大堆软件包。然后我就可以用"brew switch openssl 1.0.2t";Eric Vautier 2020-10-02
额外的评论(由于超过5mn,所以无法编辑上面的内容)。对于PHP5.6(不幸的是,一个旧项目仍然需要,不要问),我也不得不"wget raw.githubusercontent.com/Homebrew/homebrew-core/…"来获得icu4c 64.2,然后用"brew switch icu4c 64.2"切换到它。Eric Vautier 2020-10-02
#5楼
得票数 8

其他解决方案不会起作用,因为你会得到这个错误"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead."下面的步骤可以解决这个问题:

  1. 首先进入本地安装的homebrew系统
cd /usr/local/Homebrew/
  1. Homebrew 2.5删除了直接从git仓库安装公式的选项,所以我们需要签出一个较早的版本
git checkout 2.3.0
  1. 安装openssl最新的1.0.x版本
HOMEBREW_NO_AUTO_UPDATE=1 brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
  1. 返回到当前版本的自制软件
git co -
  1. 告诉brew使用openssl的旧版本,这样你就可以选择使用哪个版本,如果你同时安装了这两个版本的话。
brew switch openssl 1.0.2t
Juan Gomez 提问于2020-10-05
cocheckout的一个常用别名。如果你没有设置这个,请运行git checkout -o切换到当前版本的homebrew。romeo14 2020-10-18
更好的解决方法是直接使用:Brew install rbenv/tap/openssl@1.0Firefishy 2021-03-29
#6楼
得票数 2

更新--我想我一直在被降票,因为我只是简单地发布了一个链接而没有解决方案。所以这里是解决方案:

  • 下载这个公式的OpenSSL V1.0(它已经打了补丁,可以在arm64处理器上运行)。
  • 安装它 brew install openssl@1.0.rb.
  • 把这个版本添加到你的PATH的开头。 注意:确保RVM是你的shell配置文件(.zshrc / .bashrc)中的最后一个PATH变量的变化
    echo 'export PATH="/opt/homebrew/opt/openssl@1.0/bin:$PATH"' >> ~/.zshrc
  • 导出一些所需的环境变量
 export LDFLAGS="-L/opt/homebrew/opt/openssl@1.0/lib"
 export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.0/include"
 export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.0/lib/pkgconfig"
  • 重新加载你的shell配置 source ~/.zshrc
  • 核实你的openssl版本
> openssl version
OpenSSL 1.0.2u  20 Dec 2019
  • 禁用RVM的autolibs rvm autolibs disable
  • 导出一些环境变量,以避免编译错误
export RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
export optflags="-Wno-error=implicit-function-declaration"
  • 安装Ruby
rvm install 2.3.0 --with-openssl-dir=/opt/homebrew/opt/openssl@1.0

参考资料

3minus1 提问于2021-08-06
3minus1 修改于2021-08-06
#7楼
得票数 -2

也许这不是一个完美的想法,但它解决了我的问题(libssl.1.0.0.dylib image not found):

sudo ln -s /usr/lib/libssl.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
sudo ln -s /usr/lib/libcrypto.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib

希望它对你有用!"!

这个回复

Minglei Lee 提问于2020-11-23
不要这样做!使用系统库的符号链接是很危险的。另外,MacOS的新版本使用LibreSSL而不是OpenSSL。使用: brew install rbenv/tap/openssl@1.0Firefishy 2021-03-29
#8楼
得票数 -2

下面是linux-brew的公式,openssl@1.0.2

brew install https://raw.githubusercontent.com/Homebrew/linuxbrew-core/20ab55b304597c6c47149dc0e50bd5f7ea45b678/Formula/openssl.rb
bird 提问于2021-01-28
Dharman 修改于2021-01-28