Homebrew 中 PHP 5.6openssl 与 icu4c 多版本问题

12月13日2020 工作杂谈 mac , brew 看评论

最近不小心升级了Mac系统到 MacOS Big Sur 造成历史brew安装的PHP5.6不可用。主要是提示以下错误:


dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/Cellar/php@5.6/5.6.40/bin/./php

一、尝试方法


在使用HomeBrew 卸载重新后,还是不正常。在每次单独安装单独某个固定版本后,会存在以下两个问题: 1、安装完成后,会自己重构依赖,自动更新到最新版本;2、安装完特定版本后,会删除以前下载的最新版本。


二、解决方案


最后看了一下HomeBrew 特定版本的安装包以及结合PHP提示的错误,认为相应的PHP版本只是缺少特定的版本库,手动安装上就可以。


2.1 如果手动安装


具体的操作步骤哪下:
1. 找到缺少哪些特定版本库,比如我的缺少 openssl l.0.2tlibicuio.64
2. 根据Homebrew相应的安装文件下载对应源码,然后构建、安装
3. 解决问题。


2.2 相应版本的构建命令


openssl 构建安装命令:


解压安装包,然后进入相应目录执行:
perl ./Configure --prefix=/usr/local --openssldir=etc/openssl no-ssl2 no-ssl3 no-zlib shared enable-cms darwin64-x86_64-cc enable-ec_nistp_64_gcc_128

make depend
make install

icu4c 手动安装


解压进入 source 目录,执行以下命令:
./configure --prefix=/usr/local --disable-samples --disable-tests --enable-static --with-library-bits=64

make
make install


备注


如果查看Homebrew 安装脚本的prefix路径,使用命令 brew --prefix 获取相应的路径