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.) Это просто упростило установку нескольких (особенно старых) версий формулы.

Другие вопросы по тегам