Spec-Zone.ru › Homebrew

Запрос к brew

В этом документе мы будем использовать jq для разбора JSON, доступного из Homebrew с помощью brew install jq.

Обзор

brew предоставляет команды для получения общей информации из системы. brew list отображает установленные формулы. brew deps foo показывает зависимости, от которых foo зависит.

Конечно, можно написать дополнительные команды, включая внешние команды, для получения более подробной информации. Здесь есть несколько недостатков. Во-первых, это требует написания Ruby-кода для работы с потенциально изменяющейся базой кода Homebrew. При рефакторинге потребуется изменить больше кода, и Homebrew не может гарантировать, что внешние команды будут продолжать работать. Во-вторых, это требует проектирования самих команд, указания входных параметров и форматов вывода.

Для того, чтобы пользователи могли выполнять сложные запросы без указанных выше проблем, Homebrew предоставляет команду brew info.

brew info --json

brew info может выводить информацию о формулах в формате JSON. Этот JSON затем можно проанализировать с помощью выбранных вами инструментов. Подробности см. в brew info --help.

По умолчанию используется версия схемы v1, которая возвращает информацию о формулах; укажите --json=v2, чтобы включить и формулы, и бочки. Обратите внимание, что поля могут быть добавлены в схему по мере необходимости без увеличения версии схемы. Любые существенные несовместимые изменения приведут к изменению версии схемы.

Сама схема в настоящее время не документирована за пределами кода в formula.rb, который её генерирует.

Примеры

Верхним элементом вывода JSON всегда является массив, поэтому используется оператор map для обработки данных.

Вывести информацию об одной формуле в красивом формате

brew info --json=v1 tig | jq .

Установленные формулы

Чтобы показать всю JSON-информацию обо всех установленных формулах:

brew info --json=v1 --all | jq "map(select(.installed != []))"

Обратите внимание, что обработка всех формул может быть медленной; быстрее использовать brew для этого:

brew info --json=v1 --installed

Связанные формулы только с кегом

Некоторые формулы помечены как «только кег», что означает, что установленные файлы не связаны с общими каталогами bin, lib и т. д., так как это может привести к конфликтам. Такие формулы можно принудительно связать с общими каталогами, но делать это не рекомендуется (и это заставит brew doctor пожаловаться.)

Чтобы найти имена связанных формул только с кегом:

brew info --json=v1 --installed | jq "map(select(.keg_only == true and .linked_keg != null) | .name)"

Несвязанные обычные формулы

Чтобы найти имена обычных (не только кег) формул, которые установлены, но не связаны с общими каталогами:

brew info --json=v1 --installed | jq "map(select(.keg_only == false and .linked_keg == null) | .name)"

formulae.brew.sh

formulae.brew.sh имеет документированный JSON API, который предоставляет доступ к выводу brew info --json=v1 без необходимости доступа к Homebrew.

Заключительные замечания

Используя вывод JSON, можно выполнять запросы к Homebrew с меньшим риском сбоев из-за изменений в коде Homebrew и без необходимости понимания внутренних механизмов Ruby Homebrew.

Если вывод JSON не предоставляет какой-то информации, которая должна быть, пожалуйста, отправьте запрос, желательно с исправление, чтобы добавить необходимую информацию.

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Querying-Brew

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API