Bash检查是否安装了特定版本的Brew配方

史蒂文·弗海恩

我正在用bash编写脚本,以配置一些安装了某些Brew公式的MacOS计算机。我首先要检查是否已安装该公式的特定版本。如果未安装,脚本将安装它。

问题是我不知道该如何检查。例如,brew ls --versions openssl返回所有已安装的版本。但是我想检查一个特定的版本,有点像gems gem list -i cocoapods -v 1.3.1这样做的原因是某些项目需要安装特定的版本(例如openssl)。

有可能这样做吗?请注意,有一些冲泡公式需要检查,因此我想使其尽可能轻巧:)

我有这样的想法(当然要正确检查):

if ! NOT_INSTALLED; then #check to see if ruby -v 2.2.2 has been installed
    brew install ruby -v 2.2.2
else
    echo "Skipping install ruby..."
fi

提前致谢!

Bnaecker

没有内置的Homebrew命令来检查是否安装了版本,但是使用某些Shell脚本非常简单。例如,

brew list --versions | grep qt | cut -d " " -f 2

列出我的计算机上安装的所有Qt版本,并打印:

5.10.0_1
5.7.1

您可以进一步优化它以查看是否安装了特定版本:

brew list --versions | grep "qt.* 5.7"

将打印任何版本的Qt 5.7。

一个简单的shell函数将搜索特定公式的特定版本,如下所示:

formula_installed() {
    [ "$(brew list --versions | grep "$1.* $2")" ]
    return $?
}

用法:

$ formula_installed qt 5.7
$ echo $?
1
$ formula_installed qt 8
$ echo $?
0

有关通话.*中正则表达式的注释grep最初,homebrew/versions水龙头中维护着多个版本的公式弃用此方法,是为了保留较旧的版本,homebrew/core但要附加@<version>其名称。(例如,您可以通过执行安装Qt 5.5版brew install [email protected]。)这使得安装多个(尤其是较旧的)公式版本更加容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章