Brew cask: я хотел бы проверить, установлен ли уже пакет/формула с помощью brew или других средств.

Я пытаюсь установить некоторые программы, используя варочную бочку, и я хотел бы проверить, установлен ли уже пакет/формула с помощью варки или другими способами.

У меня есть скрипт, который устанавливает список программного обеспечения с помощью brew cask, и я не хочу, чтобы он устанавливал программное обеспечение, которое уже присутствует на машине.

Чтобы добиться этого, я сослался на этот вопрос: с Homebrew, как проверить, установлено ли программное обеспечение/пакет?

Это указало мне правильное направление, но я могу только избежать установки программного обеспечения, которое устанавливается через варочную бочку.

Если программное обеспечение установлено путем загрузки dmg и уже присутствует в папке /Applications/, оно не распознает это и продолжает установку программного обеспечения.

Есть ли способ выяснить, установлено ли приложение с помощью варева или любым другим способом, прежде чем мой скрипт начнет его устанавливать

«Если программное обеспечение установлено путем загрузки dmg и уже присутствует в папке / Applications /, оно не распознает это и продолжает установку программного обеспечения». Используйте findкоманду для поиска целевой формулы в папке /Applicationsи . ~/ApplicationsПеречислите все совпадения в консоли и спросите пользователя, хотят ли они продолжить установку или нет.
@anki Но имя формулы и имя приложения не совпадают. Например, формула Google Chrome — это google-chrome, а имя приложения — «Google Chrome». В этом случае мне придется продолжать редактировать сценарий, если приложение решит изменить свое имя.
регулярное выражение, поиск без учета регистра и т. д. могут быть полезны здесь. Я не знаю никакого центрального списка всех установленных приложений. надо просто поискать..
@анки наверное. Я надеялся, что каким-то образом я мог бы извлечь имя приложения из формулы с помощью варева перед установкой, но, похоже, у меня нет другого варианта.
Вы можете проанализировать вывод brew cask info --json=v1 google-chromeили brew cask info google-chromeнайти имя, на которое будет установлена ​​бочка. Однако это не поможет в случае переименованных приложений.
@nohillside Если приложения переименовываются, мне все равно. Пользователю придется разобраться, но эта команда определенно облегчит мне жизнь. Спасибо
@nohillside Это помогло. Потрясающе, спасибо

Ответы (2)

Я предполагаю, что вы знаете название приложения. Затем просто проверьте наличие приложения

if [[ ! -d "/Applications/APP-TO-CHECK.app" ]]; then
    # install APP-TO-CHECK
fi 
Но имя формулы и имя приложения не совпадают. Например, формула Google Chrome — это google-chrome, а имя приложения — «Google Chrome». В этом случае мне придется продолжать редактировать сценарий, если приложение решит изменить свое имя.
Я попытался запустить ваш скрипт, но он выдает следующую ошибку: синтаксическая ошибка в условном выражении -> if [[ ! -d /Applications/Google Chrome.app ]]; затем
Добавление кавычек к нему исправило проблему
@NickDiv Имена с пробелами всегда нужно заключать в кавычки в оболочке. Что касается проблемы переименования: я не вижу надежного способа охватить все возможные сценарии и, честно говоря, считаю это редкостью. При необходимости я бы просто проверил все известные имена.
Это стандарт POSIX для тестирования. Достаточно написать [и ]. Это работает в любой оболочке. Нет необходимости в [[и ]]. См. BashFAQ/031: mywiki.wooledge.org/BashFAQ/031.

Это примитивное решение, но оно может помочь.

  1. Загрузите это приложение (оно позволяет искать скрытые файлы).
  2. Найдите название вашего приложения/репозитория, которое вы хотите загрузить.
  3. Если его нет, то можно с уверенностью сказать, что у вас его нет.