我正在使用 macOS 10.15.6 Catalina 和 Homebrew(最新版本,2.5.1)。当我这样做时,brew list
我注意到[email protected]
我的已安装公式列表中有。
我不记得我是否曾经openssl
手动安装过或者它附带了另一个公式,但我自己当然从来没有明确选择过这个@1.1
版本。
当我这样做时openssl version
,它说LibreSSL 2.8.3
。
当我这样做时brew install openssl
,它说:
警告:[email protected] 1.1.1g 已经安装并且是最新的
要重新安装 1.1.1g,运行brew reinstall [email protected]
相反,我尝试了brew install libressl
. 安装好,但是当我现在这样做时,openssl version
它仍然说LibreSSL 2.8.3
.
但是,如果我这样做/usr/local/opt/libressl/bin/openssl version
,它会说LibreSSL 3.1.4
这似乎是最新的。所以现在显然安装了两个版本,但“默认”版本仍然是旧版本。
两个问题:
我只想使用最新的 openssl(或 libressl)。当我运行时,
openssl
我希望它调用可用的最新版本。我可以或应该以某种方式摆脱该@1.1
版本并安装最新的 openssl 吗?或者像我一样安装 libressl,但是我希望它是默认的,而不是旧的。考虑到@1.1 版本的存在可能是有原因的,这是否意味着依赖于该特定版本的某些其他软件将不再工作?这有点糟糕,例如,如果我碰巧有两个软件,每个软件都依赖于不同的特定版本,该怎么办。我可以指示依赖旧版本的软件使用旧版本的特定路径,同时保持
openssl
(没有显式路径)是最新的吗?
MacOS 包含一个较旧版本的
openssl
,这是路径中默认的内容,也是您将看到的(尝试which openssl
查看在您的计算机上选择了哪个)。Homebrew 安装
[email protected]
到/opt
,这意味着你需要从那里显式调用它,如果你想链接你编译的其他程序,你需要设置库路径等。与 libressl 相同。
我假设是二进制文件?一种方法是在你的shell中添加你自己的
$HOME/bin
目录(无论如何我推荐),并在那里制作一个调用你想要使用的版本PATH
的shell脚本。openssl
当你这样做时,你不会搞砸其他任何事情。确切地。这就是为什么你不应该替换 MacOS 自带的那个,例如。
如果您以相反的方式执行此操作(在您的终端中有不同的 PATH),那么您从终端外部调用的任何内容都不会中断,对于初学者来说。
要回答评论中的问题:
我有
~/.profile
一个在里面。
看到这个答案。即:创建一个
~/bin/openssl
文件在里面。别忘了
chmod a+x ~/bin/openssl
。环境将通过,重定向将适用。通配符将在第一次调用时解析,但以解析的形式传递。