brew无法更新OpenSSL求助:已装1.0.2o,需至少1.0.2j版本
解决OpenSSL降级到1.0.2j的问题
首先得澄清一个小误区:OpenSSL 1.0.2系列的版本号是按字母顺序递进的,1.0.2o其实比1.0.2j更新(o在j之后),所以brew会判定你当前的版本已经是1.0.2分支里的较新版本,因此brew upgrade openssl不会帮你安装更旧的1.0.2j。你需要的是降级安装,具体步骤如下:
方法一:通过brew历史Formula安装
brew的核心仓库里保留了Formula的历史版本,你可以通过git检出对应1.0.2j版本的openssl Formula文件来安装:
首先进入brew的Formula目录:
cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core/Formula查找对应OpenSSL 1.0.2j版本的提交记录:
git log --oneline openssl.rb | grep "1.0.2j"这会输出包含1.0.2j的提交哈希值,比如类似这样的行:
abc1234 openssl: update to 1.0.2j,复制那个哈希值(比如abc1234)。检出该版本的openssl.rb文件:
git checkout <刚才复制的哈希值> openssl.rb安装这个版本的OpenSSL:
brew install openssl安装过程中brew会编译并安装1.0.2j版本。
恢复原来的openssl.rb文件(避免影响后续brew操作):
git checkout -- openssl.rb
方法二:切换已安装的版本
如果之前已经通过某种方式安装过1.0.2j,只是当前默认使用的是1.0.2o,可以直接切换版本:
查看brew已安装的OpenSSL版本:
brew list --versions openssl如果输出里有1.0.2j,就可以继续下一步。
切换到1.0.2j版本:
brew switch openssl 1.0.2j如果
brew switch命令报错(新版本brew可能移除了该命令),可以用link命令强制切换:brew link --force openssl@1.0.2j
验证安装结果
安装完成后,验证当前使用的OpenSSL版本:
openssl version
如果输出显示OpenSSL 1.0.2j xx xxx xxxx,就说明成功了。
内容的提问来源于stack exchange,提问作者user1470393
相关产品推荐
相关产品推荐

