macOS 上的 OpenSSL 1.0.2m
Posted
技术标签:
【中文标题】macOS 上的 OpenSSL 1.0.2m【英文标题】:OpenSSL 1.0.2m on macOS 【发布时间】:2020-04-07 19:23:02 【问题描述】:为了构建一个特定的库,我需要带有开发包的 openssl 库版本 1.0.2m。我正在使用 macOS。使用 brew install openssl
安装最新版本 1.1.1d。
【问题讨论】:
【参考方案1】:由于 OpenSSL 1.0.2 将在 2019 年底结束生命周期,因此不再通过 Homebrew 提供。 Homebrew 2.2.0 announcement中提到了这一点。
从源代码自己构建和安装 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
,也可以尝试下载该版本的openssl.rb
from gitHub.com
并在其上运行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.
【讨论】:
我花了很长时间才找到可行的解决方案 - 非常感谢! 非常感谢!我在这个问题上浪费了两天时间:( 使用来自***.com/a/61368160/2551154 的 rbenv/tap/openssl@1.0 是一个更好的解决方案,因为它安装为 openssl@1.0 并且不太可能与其他软件包发生冲突。检出旧版本的 openssl.rb 可能会导致冲突。【参考方案2】:最近由于 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
【讨论】:
第一个命令单独为我工作,尽管我必须手动修复/usr/local/opt/openssl/lib
中的符号链接才能被拾取。
太棒了。帮了我很多!
@LarsMariusGarshol 如果您不关心也有可用的 OpenSSL 1.1,那就可以了。
我还必须修复符号链接,我知道下次MacOS更新时我必须回到这里,所以我将粘贴符号链接命令ln -s /usr/local/opt/openssl@1.0 /usr/local/opt/openssl
【参考方案3】:
除了下载特定版本的Formula/openssl.rb
,您还可以使用here 中提到的具有特定提交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
【讨论】:
对我来说,该命令导致错误:"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead."
:/【参考方案4】:
1- 下载文件:
wget https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
2 - 使用下载的文件运行 brew:
brew install openssl.rb
【讨论】:
这成功了!我必须首先通过“brew install wget”安装 wget,它在此过程中更新了很多软件包。然后我能够“brew switch openssl 1.0.2t” 附加评论(超过 500 万无法编辑)。对于 php5.6(不幸的是,旧项目仍然需要,不要问),我还必须“wget raw.githubusercontent.com/Homebrew/homebrew-core/…”来获取 icu4c 64.2 并使用“brew switch icu4c 64.2”切换到它。【参考方案5】:其他解决方案将不起作用,因为您将收到此错误"Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead."
,以下步骤将解决它:
-
先去本地安装homebrew
cd /usr/local/Homebrew/
-
Homebrew 2.5 删除了直接从 git repos 安装公式的选项,因此我们需要检查旧版本
git checkout 2.3.0
-
安装 openssl 最新 1.0.x 版本
HOMEBREW_NO_AUTO_UPDATE=1 brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
-
返回当前版本的自制软件
git co -
-
告诉 brew 使用旧版本的
openssl
这样你就可以选择使用哪个版本,如果你都安装了
brew switch openssl 1.0.2t
【讨论】:
co
是checkout
的常用别名。如果您还没有设置,请运行git checkout -o
以切换到当前版本的自制软件。
更好的解决方案就是使用:brew install rbenv/tap/openssl@1.0【参考方案6】:
更新 - 我想我一直在投票,因为我只是发布了一个没有解决方案的链接。所以这里是解决方案:
下载 OpenSSL V1.0 的 this 公式(已修补以与 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 自动库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
Ref
【讨论】:
【参考方案7】:也许这不是一个完美的主意,但它解决了我的问题(找不到 libssl.1.0.0.dylib 图像):
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
希望它对你有用!
见this reply
【讨论】:
不要这样做!使用系统库的符号链接是危险的。 MacOS 的新版本也使用 LibreSSL 而不是 OpenSSL。使用:brew install rbenv/tap/openssl@1.0【参考方案8】:这是 openssl@1.0.2 的 linux-brew 公式
brew install https://raw.githubusercontent.com/Homebrew/linuxbrew-core/20ab55b304597c6c47149dc0e50bd5f7ea45b678/Formula/openssl.rb
【讨论】:
以上是关于macOS 上的 OpenSSL 1.0.2m的主要内容,如果未能解决你的问题,请参考以下文章