MacOS上的OpenSSL 1.0.2m
为了建立一个特定的库,我需要openssl库的1.0.2m版本和开发包。我在macOS上工作。使用brew install openssl
安装最新的1.1.1d版本。
由于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.
最近,由于最近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
中的符号链接,以使其被接收到。
- Lars Marius Garshol 2020-05-08
ln -s /usr/local/opt/openssl@1.0 /usr/local/opt/openssl
。
- Alberto 2020-12-16
你可以不下载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
"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
1- 下载该文件:
wget https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
2 - 用下载的文件运行BREW:
brew install openssl.rb
其他解决方案不会起作用,因为你会得到这个错误"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仓库安装公式的选项,所以我们需要签出一个较早的版本
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
切换到当前版本的homebrew。
- romeo14 2020-10-18
更新--我想我一直在被降票,因为我只是简单地发布了一个链接而没有解决方案。所以这里是解决方案:
- 下载这个公式的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
也许这不是一个完美的想法,但它解决了我的问题(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
希望它对你有用!"!
见这个回复。
下面是linux-brew的公式,openssl@1.0.2
brew install https://raw.githubusercontent.com/Homebrew/linuxbrew-core/20ab55b304597c6c47149dc0e50bd5f7ea45b678/Formula/openssl.rb