老旧Mac 以 homebrew 安装 openssl@3 失败的问题及解决

2024-06-04
1分钟阅读时长
497字
阅读

一夜回到解放前, 助我战斗多年,早已年迈退休的 老Mac 不得已召回复用。

虽战功赫赫、忠心耿耿,但毕竟年迈, 重启之旅也是险象环生

现今AI横行、提词师肆虐,借AI之名,行自研之声,实则移花接木、偷龙转凤,自诩神迹 之人之事不鲜。

作为技术人,我给 老Mac 装个 python3 是合理的吧

可如今也没往日那么简单随意了,上来就 openssl@3 依赖安装失败,啪啪打脸

问题表现

测试用例校验失败

brew install openssl@3

...

make test fail

排查过程

  1. 查看 homebrew 关于 openssl@3 的源码:

https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/o/openssl@3.rb

从源码可看出,整体安装脚本较为简单, 针对 linuxmac 环境处理流程命令有差异

整理精简翻译 mac 流程, 基本如下:

homebrew 方式, 基础路径自然是 /usr/local/Celar

我的 老Mac 较旧架构自然是 intel (x86_64), 安装参数追加的则为 darwin64-x86_64-cc

自行查询 cpu架构: uname -m

perl ./Configure \
  --prefix=/usr/local/Cellar/openssl@3/3.3.0 \
  --openssldir=/usr/local/openssl@3 \
  --libdir=lib \
  no-ssl3 \
  no-ssl3-method \
  no-zlib \
  darwin64-x86_64-cc \
  enable-ec_nistp_64_gcc_128

make

make install MANDIR=/usr/local/Cellar/openssl@3/3.3.0/share/man MANSUFFIX=ssl

make test

既然 makeinstall 流程是正常的, 只是最后的 test 流程失败, 那么禁用 test 即可

  1. brew 的脚本并没有那么细的控制粒度, 只能手工源码编译安装这一条路了

从源码中可得 目标版本源码包下载地址

curl -O https://www.openssl.org/source/openssl-3.3.0.tar.gz

tar xzfv openssl-3.3.0.tar.gz

cd openssl-3.3.0

# 不喜欢用 perl, 直接 ./config 干净利落
./config \
  --prefix=/usr/local/Cellar/openssl@3/3.3.0 \
  --openssldir=/usr/local/openssl@3 \
  --libdir=lib \
  no-ssl3 \
  no-ssl3-method \
  no-zlib \
  darwin64-x86_64-cc \
  enable-ec_nistp_64_gcc_128

make

make install MANDIR=/usr/local/Cellar/openssl@3/3.3.0/share/man MANSUFFIX=ssl

新开终端, 验证确认

openssl --version

# OpenSSL 3.3.0 9 Apr 2024 (Library: OpenSSL 3.3.0 9 Apr 2024)
  1. homebrew 链接 openssl

brew 正确识别, 后续安装 python@3.10 分析依赖, 自然就会跳过 openssl@3 安装

brew link openssl@3

结束手工

Avatar
zfkun 喜欢游戏、热爱技术、追求艺术、崇尚自由、渴望精彩、最爱唠叨