我在bash中创建一个脚本来配置一些安装了一些brew配方的MacOS机器。我首先要检查是否已安装该公式的特定版本。如果未安装,脚本将安装它。
问题是我无法弄清楚如何检查这个。例如。 brew ls --versions openssl
返回所有已安装的版本。但我想检查一个特定的版本,有点类似于宝石gem list -i cocoapods -v 1.3.1
。原因是某些项目需要安装特定版本(如openssl)。
有可能这样做吗?请注意,有一些brew公式需要检查,所以我希望尽可能保持轻量级:)
我有这样的想法(但正确检查当然):
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
提前致谢!
答案 0 :(得分:2)
没有内置的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
点击中维护了公式的多个版本。这已被弃用,有利于在[{1}}中保留旧版本,但在其名称后附加homebrew/core
。 (例如,您可以通过执行@<version>
安装Qt 5.5版。)这样可以更轻松地安装公式的多个(特别是旧版本)版本。