Bash проверьте, установлена ли конкретная версия формулы варева
Я делаю скрипт на bash для настройки некоторых компьютеров MacOS, на которых установлены некоторые формулы brew. Сначала я хочу проверить, установлена ли конкретная версия этой формулы. Если не установлен, скрипт установит его.
Дело в том, что я не могу понять, как это проверить. Например brew ls --versions openssl
возвращает все установленные версии. Но я хочу проверить конкретную версию, похожую на гемы 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
Заранее спасибо!
1 ответ
Нет встроенной команды Homebrew, чтобы проверить, установлена ли версия, но это довольно просто сделать с некоторыми сценариями оболочки. Например,
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.
Простая функция оболочки, которая будет искать конкретную версию определенной формулы, может выглядеть так:
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 qt@5.5
.) Это просто упростило установку нескольких (особенно старых) версий формулы.